Seite 1 von 1
[gelöst]tr s in MessageBox
Verfasst: 16. März 2006 14:03
von shader76
Hallo Forum,
ich habe das Problem dass ich die Texte in der MessageBox nicht in eine tr-Datei schreibe kann
Code: Alles auswählen
void openError()
{
QMessageBox *message = new QMessageBox();
message->setText(tr("Fehler beim Öffnen der Datei!"));
message->setIcon(QMessageBox::Critical);
message->exec();
return ;
}
ERROR
tr-Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden.
#include <QMessageBox> ist eingefügt
Verfasst: 16. März 2006 14:59
von Querdenker
Hi Shader,
ich mache es immer wie im TrollTech-Bespiel:
QMessageBox::critical(0, tr("Fehler"),
tr("Fehler beim Öffnen der Datei: %1") .arg(sFileName),
1, 0, 0);
Verfasst: 16. März 2006 16:25
von macman
Das wird auch nicht helfen, da seine Funktion nicht in einer von Qt abgeleiteten Klasse ist.
message->setText(message->tr("Fehler beim Öffnen der Datei!"));
sollte helfen.
Verfasst: 24. März 2006 11:59
von shader76
hi all,
ich habe diesen Thread ganz vergessen
das Problem besteht weiterhin, es kommt zwar mit dieser Variante keine Fehlermeldung, jedoch übersetzt er die Messagges nicht. Bei dem Befehl im MS-DOS Fenster
lupdate -verbose Functionstr.pro
kommt folgende Meldung :
Functions.cpp:55: Cannot invoke tr() like this
Functions.cpp:65: Cannot invoke tr() like this
Functions.cpp:74: Cannot invoke tr() like this
Functions.cpp:83: Cannot invoke tr() like this
Functions.cpp:98: Cannot invoke tr() like this
Functions.cpp:110: Cannot invoke tr() like this
Functions.cpp:119: Cannot invoke tr() like this
Updating 'Functionstr_en.ts'...
Found 7 source texts (3 new and 4 already existing)
ach ja und im Linguist steht bei CONTEXT
@default
Verfasst: 24. März 2006 13:40
von macman
Hier mal eine aufs Minimum reduzierte main-Funktion mit übersetzten Texten für ein Popup-Menü.
Code: Alles auswählen
int main( int argc, char** argv )
{
QTranslator translator( 0 );
if (!translator.load( language, "." ))
translator.load("Lang/myapp_ENU", ".");
QApplication app( argc, argv );
Dialog dialog;
// Popupmenü für den Systemtray
QMenu menu;
QAction* actionShow = new QAction(QIcon(), app.translate("SysTray", "Zeige &Dialog"), &app);
actionShow->setShortcut(app.translate("SysTray", "Ctrl+D"));
QObject::connect(actionShow, SIGNAL(triggered()), &dialog, SLOT(showNormal()));
menu.addAction(actionShow);
menu.addSeparator();
QAction* actionQuit = new QAction(QIcon(), app.translate("SysTray", "&Beenden"), &app);
actionQuit->setShortcut(app.translate("SysTray", "Ctrl+B"));
QObject::connect(actionQuit, SIGNAL(triggered()), &app, SLOT(quit()));
menu.addAction(actionQuit);
app.exec();
return 0;
}
Verfasst: 24. März 2006 14:39
von shader76
Das habe ich ja auch,..alle anderen Blöcke in tr übersetzt er ja auch.
Nur die MessageBoxes lässt er aus . Beim erstellen der ts-Datei kommt halt diese Fehlermeldung in der DOS-Box.
Die MessageBoxes habe ich in ein tr eingebunden wie du es vorher gezeigt hattest,
Verfasst: 24. März 2006 15:08
von macman
Du sollst ja eben nicht die tr-Methode der Messagebox, sondern die translate-Methode des Application-Objects nehmen. Deswegen mußt Du da auch den Context mit angeben, was bei tr() nicht nötig ist.
Verfasst: 27. März 2006 09:55
von shader76
hmmm,.....sorry aber ich habe keine ahnung wie ich das in meiner Funktion anwenden soll.
wie würde das in meiner obigen Methode aussehen ?

Verfasst: 28. März 2006 07:34
von macman
shader76 hat geschrieben:wie würde das in meiner obigen Methode aussehen ?

Keine Ahnung. Der Translator ist in deinem Application-Objekt und du mußt irgendwie an einen Zeiger darauf kommen. Deine Methode ist aber von nichts abgeleitet und ins Blaue raten bringt es nicht.
Verfasst: 28. März 2006 12:36
von shader76
habe es hinbekommen
der Code sieht dann wie folgt aus :
Code: Alles auswählen
void openError()
{
QMessageBox *message = new QMessageBox();
message->setText(QObject::tr("Fehler beim Öffnen der Datei!"));
message->setIcon(QMessageBox::Warning);
message->exec();
return ;
}