Qt MainWIndow Fenstertitel zeigt keine deutschen Umlaute

R

ralli

Guest
Ich arbeite mit Qt Version 4.7.4 und dem Qt Creator Version 2.01. Das Vorgabe-Encoding des Creators steht auf System.

In meiner main.cpp habe ich folgendes eingefügt, damit die Standarddialoge in deutsch sind:

Code:
#include <QTranslator>
#include <QLocale>
#include <QLibraryInfo>

.....

// deutsche Dialoge

    QString translatorFileName = QLatin1String("qt_");

    translatorFileName += QLocale::system().name();

    QTranslator *translator = new QTranslator(&a);

    if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))

    a.installTranslator(translator);
Das funktioniert auch einwandfrei.

Deutsche Umlaute funktionieren bei der Arbeit mit dem integriertem Designer vom Creator in

der Menüleiste

in QLabels

bei der PushButton Beschriftung

bei Items von QTreeWidget

in der QMessageBox

einwandfrei.

Wenn ich aber deutsche Umlaute im Objektinspektor des Designers der mainwindow.ui die Eigenschaft windowTitle vom MainWindow oder eines Dialoges (zum Beispiel "Über Programm") benutze, dann werden sie nach der Compilierung nicht angezeigt. Statt dessen wird der Programmname angezeigt.

Dann habe ich noch folgendes probiert:

Code:
void MainWindow::on_pb_titel_clicked()
{
     MainWindow::setWindowTitle(trUtf8("Hallo Übel"));

 //   QString titel = "Hallo Übel";

 //   setWindowTitle(titel);

}

Das gleiche Ergebnis, wenn ich deutsche Umlaute benutze, werden sie nicht angezeigt. Hier werden dann die deutschen Umlaute im Fenstertitel einfach unterschlagen. Wer weiss Rat, was mache ich falsch? Oder ist das ein Bug?
 
Zuletzt bearbeitet von einem Moderator:
Also das hier bei den Profis niemand mit der Qt Klassenbibliothek arbeitet, verwundert mich aber sehr, ja das kann ich mir einfach nicht vorstellen. Rakor, bei Dir weiss ich es aus Deinen Threads. Könntest Du bitte vielleicht mal ein Probeprojekt mit dem Creator erstellen und im Objektinspektor den Fenstertitel setzen mit einem deutschen Umlaut? Das dauert doch nur 2 Minuten! Und mir dann bestätigen, das das bei Dir auch nicht geht. Danke! Es geht nicht um diese Banalität, den Fenstertitel zu setzen, es geht doch einzig darum, das das ja auch nur ein QString ist und es merkwürdig ist, das das nicht funktioniert. Wofür ich das brauche? Normalerweise ruft doch jedes Programm im Menü Hilfe einen Info Dialog auf, wo der Programmname und die Programmversion stehen und der Autor sich eventuell verewigt. Und dann heißt der Fenstertitel doch einfach "Über Programmname".
 
Ich werde es morgen mal testen wenn ich die Zeit hab ralli. Heute kam ich leider nicht dazu.
 
Vlt hilft es Dir.

Ich nutze QtCreator 2.5.0 und Qt 4.8.2 (64bit)
unter Debian Testing (Wheezy).


hier bekomme ich auch keine Umlaute angezeigt:
main.cpp
Code:
#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    // next line doesn't work 
    w.setWindowTitle("Übler übler Pusche auf den Böden Du picht ßßßt wat nen mist");
    w.show();
    
    return a.exec();
}

Aber im "Designer" kann ich erfolgreich den QMainWindow Title unter den Properties setzen:
windowTitle -> Überläufer gehören verwünscht @?߀

oder eben direkt die mainwindow.ui (xml) von Hand bearbeiten wie z.B.
<class>MainWindow</class>
.
.
.
<property name="windowTitle">
<string>Üble Überläufer gehören verwünscht ß@€</string>
</property>
.
.
.

Allerdings habe ich im Designer unter den Properties locale auf German, Germany stehen.

Deinen QTranslator-Geraffel habe ich nicht benutzt....
 
Vlt hilft es Dir.

Ich nutze QtCreator 2.5.0 und Qt 4.8.2 (64bit)
unter Debian Testing (Wheezy).


hier bekomme ich auch keine Umlaute angezeigt:
main.cpp
Code:
#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    // next line doesn't work 
    w.setWindowTitle("Übler übler Pusche auf den Böden Du picht ßßßt wat nen mist");
    w.show();
    
    return a.exec();
}

Aber im "Designer" kann ich erfolgreich den QMainWindow Title unter den Properties setzen:
windowTitle -> Überläufer gehören verwünscht @?߀

oder eben direkt die mainwindow.ui (xml) von Hand bearbeiten wie z.B.
<class>MainWindow</class>
.
.
.
<property name="windowTitle">
<string>Üble Überläufer gehören verwünscht ß@€</string>
</property>
.
.
.

Allerdings habe ich im Designer unter den Properties locale auf German, Germany stehen.

Deinen QTranslator-Geraffel habe ich nicht benutzt....

Danke, interessant. Locale steht bei mir im Designer auch auf Germany, Germany. Aber es funktioniert weder im Designer noch im Sourcecode der main.cpp. Und was das "Geraffel" angeht, wenn ich das "Geraffel" auskommentiere, dann sind die Beschriftungen der Buttons in den Standarddialogen wie QFileDialog oder PrintDialog in Englisch, also hat das schon seine Berechtigung. Wie es mir scheint, scheint das ein Bug zu sein, der im Designer Deiner Version 2.5 behoben zu sein scheint. Aber in Deinem Sourcecode funktioniert es auch nicht, das ist schon irgendwie seltsam.
 
Und was das "Geraffel" angeht, wenn ich das "Geraffel" auskommentiere, dann sind die Beschriftungen der Buttons in den Standarddialogen wie QFileDialog oder PrintDialog in Englisch, also hat das schon seine Berechtigung.

Ach so, dafür ist das "Geraffel" :)
Die habe ich bisher nur in Englisch genutzt.
Gut zu wissen.
 
Ja, wir lernen nie aus.:) Auch ich entedecke bei meiner Arbeit mit der Qt Klassenbibliothek immer mal wieder was Neues. Das macht es ja gerade erst interessant und wir wachsen mit den Herausforderungen.
 
Hallo ralli,

hier (Windows7, QT Creator 2.3.1, QT 4.7.4) habe ich im integrierten Designer ein MainWindow erstellt und windowTitle gesetzt.
Alle Umlaute werden angezeigt.

Zum Test nochmal ein Dialog in einem anderen Projekt (komplett ohne Designer erstellt) per this->setWindowTitle("Über"); gesetzt funktioniert der Umlaut auch wunderbar.

Ein BSD hab ich allerdings spontan mit QT nicht zur Hand.
 
Danke Rakor, dieses Problem scheint tatsächlich auch versionsabhängig zu sein.
 
Zurück
Oben