Seite 1 von 1
Übersetzung, eigenes QObject [gelöst]
Verfasst: 18. April 2009 00:43
von Strahlex
Hallo,
meine Anwendung hat ein QMainWindow, von diesem und von einigen Dialogen muss ich auf eine von QObject abgeleitete Klasse (in einer anderen Quelldatei) zugreifen, genauer gesagt rufe ich eine statische Funktion auf, in dieser wird eine StringList mit einigen tr's erzeugt.
Das Problem ist, das Übersetzten funktioniert leider nicht. Was mache ich falsch?
Verfasst: 18. April 2009 08:32
von franzf
arg wenig code, oder?
wenn das ein statische methode ist, kann es doch sein, dass die von dem QObject, von dem die klasse erbt, recht weig mitkriegt, oder?
ersetz in der methode dann doch einfach mal das tr() durch QObject::tr().
geht das dann?
ansonsten bleibt uns nur raten...

Verfasst: 18. April 2009 10:07
von Strahlex
Funktioniert leider nicht nicht.
Hier ist ein bisschen CODE:
Code: Alles auswählen
QStringList globals::languageList()
{
QStringList languages;
languages << tr("Arabic") + ";sa;ar"
<< tr("Chinese") + ";cn;zh;"
<< tr("Croatian") + ";hr;hr;"
...
<< tr("Vietnamese") + ";vn;vi";
return languages;
}
Code: Alles auswählen
class globals : public QObject
{
public:
globals();
static QStringList languageList();
};
Das ganze binde ich dann ins MainWindow ein und rufe es per
auf.
Verfasst: 18. April 2009 11:06
von Christian81
Übersetzt und den Translator geladen hast Du aber schon??
Verfasst: 18. April 2009 11:26
von Strahlex
Natürlich, habe einen dynamischen Sprachwechsel eingebaut, vielleicht hats damit etwas zu tun. Die zur Laufzeit erstellten Widgets muss ich ja mit der retranslateUI() übersetzen.
Aber eigentlich sollte es ja funktionieren, die Stringlist wird ja bei jeden Aufruf der Funktion neu erstellt.
Verfasst: 18. April 2009 11:35
von Christian81
Dann bitte ein kleines Beispielproggie. tr() übersetzt immer zur Aufrufzeit (kein Caching oder ähnliches) - d.h. wenn der Translator richtig geladen wurde und die Texte auch übersetzt wurden kommt auch das richtige raus.
Verfasst: 23. April 2009 23:46
von Strahlex
Hab die Lösung gefunden:
Man muss dieses Qt Makro einbinden: Q_DECLARE_TR_FUNCTIONS()