[Gelöst] Zugriff auf andere UI Fenster für translete

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

[Gelöst] Zugriff auf andere UI Fenster für translete

Beitrag von ycronoy »

Hallo Leute,

Ich habe ein Problem leider bekomme ich es nicht hin aus klasse A auf klasse B zu zugreifen für QTranslator.
Ich habe bereits begriffen wie ich mit "static void" umgehe. Leider weiß ich nicht wie ich jetzt aus klasse A auf klasse B die UI ändere.

So habe ich das bis her gemacht:

Code: Alles auswählen

    QTranslator language;
    QString sprache;

        language.load("english_UK");
        qApp->installTranslator(&language);
        ui->retranslateUi();
So geht das natürlich leider nicht mehr. Ich bekomme den Fehler "'ui' was not declared in this scope ui". Das mach ja sin da diese klasse gar keine UI hat. Wie kann ich das lösen?

Ich bin euch sehr verbunden wenn einer eine Idee hat.

Danke
ycronoy
Zuletzt geändert von ycronoy am 9. November 2013 20:14, insgesamt 1-mal geändert.
trendyAndy
Beiträge: 54
Registriert: 27. März 2009 15:01

Re: Zugriff auf andere UI Fenster für translete

Beitrag von trendyAndy »

Servus,

in der anderen Klasse das changeEvent auswerten:

Code: Alles auswählen

void ClassB::changeEvent(QEvent *e)
{
    switch (e->type()) {
    case QEvent::LanguageChange:
        m_ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
oder wenn diese Klasse keine ui hat, dann eben die einzelnen Labels usw. von Hand translaten...
z.B.

Code: Alles auswählen

Pushbutton1->setText(QApplication::translate("ClassB","Blabla" , 0, QApplication::UnicodeUTF8));
Pushbutton2->setText(QApplication::translate("ClassB","Blabla" , 0, QApplication::UnicodeUTF8));
Gruß
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: Zugriff auf andere UI Fenster für translete

Beitrag von ycronoy »

In der Hoffnung das ich das irgendwie noch selber Schaffe habe ich er erstmal nicht voreilig geantwortet.

Leider verstehe ich nicht wo du das "m_ui" herhast. Das ist nämlich das Hauptproblem. Ich verstehe leider nicht wie ich aus einer fremden klasse auf das Objekt zugreifen kann.
Ich habe Klasse: A (Hat keine GUI/ui) und X (mit ui)
jetzt will ich mit einer Funktion aus Klasse/Objekt A auf die Klasse/Objekt X zugreifen. Wenn mir das klar wird, dann bekomme ich den Rest selber Problemlos hin.

Mein Wunsch denken sieht so aus "X->retranslateUi();" und das aus der Klasse A heraus.... das dies so nicht funktioniert, habe ich schon gemerkt.

Ich bitte um ein weiteren Tipp. Danke

MfG
ycronoy
trendyAndy
Beiträge: 54
Registriert: 27. März 2009 15:01

Re: Zugriff auf andere UI Fenster für translete

Beitrag von trendyAndy »

Servus!

Dachte es wäre klar...
Du mußt/kannst das changeEvent auswerten, auch in Klassen ohne GUI/ui.
Dann schreibst du dir deine eigene retranslateUi() Methode. Der Designer oder QtCreator macht ja nix anderes.

Code: Alles auswählen

void ClassA::changeEvent(QEvent *e)
{
    switch (e->type()) {
    case QEvent::LanguageChange:
        retranslateUi();
        break;
    default:
        break;
    }
}

void ClassA:retranslateUi()
{
      Pushbutton1->setText(QApplication::translate("ClassB","Blabla" , 0, QApplication::UnicodeUTF8));
      Pushbutton2->setText(QApplication::translate("ClassB","Blabla" , 0, QApplication::UnicodeUTF8));
}

Gruß
Andy
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: Zugriff auf andere UI Fenster für translete

Beitrag von ycronoy »

HI Andy (trendyAndy),

es hat etwas gedauert, aber jetzt verstehe auch ich das. ;)

MfG
ycronoy
Antworten