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 :oops:

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. :roll:

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 ;
}