[gelöst]tr s in MessageBox

Alles rund um die Programmierung mit Qt
Antworten
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

[gelöst]tr s in MessageBox

Beitrag 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
Zuletzt geändert von shader76 am 28. März 2006 12:37, insgesamt 4-mal geändert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
Querdenker
Beiträge: 99
Registriert: 1. Dezember 2005 17:44
Wohnort: Karlsruhe

Beitrag 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);
e Grüssle au
Q... ;)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag 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
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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;
}
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag 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,
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag 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 ? :?
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag 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 ;
}
-shader76-
-Visual Studio.Net 2003 & QT4.1
Antworten