PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sprache zur Programmlaufzeit ändern



24dan
18-07-2006, 11:41
Ich würde gerne zur Programmlaufzeit die Menu-sprache meines Editors ändern:

Im meiner main habe ich jetzt einen Translator erstellt:



int main( int argc, char **argv )
{
QApplication a( argc, argv );

QTranslator translator;
translator.load(QString("adler_de"),".");
a.installTranslator(&translator);
bool isSmall = qApp->desktop()->size().width() < 450
|| qApp->desktop()->size().height() < 450;

int i;
for ( i= argc <= 1 ? 0 : 1; i<argc; i++ ) {
Editor *e = new Editor;
e->setCaption("Adler");
if ( i > 0 )
e->load( argv[i] );
if ( isSmall ) {
e->showMaximized();
} else {
e->resize( 800, 300 );
e->show();
}
}
a.connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) );
return a.exec();
}



Ich frage mich jetzt nur wie ich den in meiner subfunktion bekannt mache so dass ich Ihn löschen und einen neuen setzten kann?

meine language() funktion schaut so aus:



void Editor::language()
{
QStringList items;

int language = 99;
items << tr("Deutsch") << tr("English") << tr("France") << tr("Spanish");

bool ok;
QString item = QInputDialog::getItem(this, tr("Sprache..."),
tr("Ihre Wahl ist:"), items, 0, false, &ok);
if (ok && !item.isEmpty());
e->setText(item);

language = items.indexOf(item, 0);
QString str = QString::number(language, 10);
e->setText(str);

QTranslator *translatorB = new QTranslator();
/* switch (language){
case 0: ok = translator->load(QString("adler_de"),".");
break;
etwas break;
case 2: ok = translator->load(QString("adler_fr"),".");
break;
case 3: ok = translator->load(QString("adler_sp"),".");
break;
}
*/
translatorB->load(QString("adler_en"),".");
// qApp->removeTranslator();
qApp->installTranslator(translatorB);
if (ok == TRUE)
QMessageBox::information(this, tr("Information"),
tr("Neue Spracheinstellungen sind geladen worden."));
e->setAutoUpdate( TRUE );
e->repaint();
}


einiges davon ist echt noch etwas Schlachtfeld:rolleyes: