Seite 1 von 1

tab eines qtabwidget neu berechnen

Verfasst: 14. April 2018 21:28
von Chri
Hi

Habe ein qtabwidget mit mehreren Tabs(mehreren ui's).
Im tab3 verändere ich eine globale Variable (Bitte keine Diskussion bezügl. Verwendung globaler Variablen)
Das Problem: Anscheinend werden beim Aufrufen des tabwidgets alle seine Tabs auch gleich geladen und durch Herumklicken der verschiedenen Tabs mache ich nur das eine oder andere sichtbar.

Im tab3 verändere ich nun eine globale Variable.
tab4 verwendet die globale Variable, bekommt aber nicht mit, dass diese verändert wurde.
Signal-Slot auf eine Variable (Ein Nicht-Objekt) ist - soweit ich es mitbekommen habe - nicht möglich.
Wie kann ich tab4 neu berechnen?
Da mir nichts anderes einfiel: Der Wechsel von tab3 nach tab4 löst ja ein Event aus
und in dem event: ui->tabWidget_3->currentWidget()->Neuberechnen????

LG
Chri

Re: tab eines qtabwidget neu berechnen

Verfasst: 15. April 2018 12:42
von hilefoks
QTabWidget hat ein Signal currentChanged(int index). Das könntest du benutzen um festzustellen, das du auf den tab4 wechselst.
Und wenn du auf den Tab wechselst setzt du die globale Variable selbst neu.

Im Prinzip:

Code: Alles auswählen

connect(ui->tabWidget, &QTabWidget::currentChanged, [this](int index) {
    if(index == ui->tabWidget->indexOf(ui->tab4)) {
        ui->tab4->lineEdit->setText(meine_globale_variable);
    }
});
MfG
Hilefoks

Re: tab eines qtabwidget neu berechnen

Verfasst: 17. April 2018 12:19
von Chri
Danke

Hab noch Folgendes geändert:
In tab4 fast Alles, was nach dem ui->setupUi(this) kommt, in eine public Funktion "tabelleStern" gepackt.
Somit ist auch das Auslesen und die Verarbeitung der globalen Variablen in dieser Funktion

Code: Alles auswählen

connect(ui->tabWidget, &QTabWidget::currentChanged, [this](int index) {
    if(index == ui->tabWidget->indexOf(ui->tab4)) {
        ui->tab4->tabellestern();
    }
});
Dadurch wird tab4 jedesmal neu berechnet, incl. aktueller globaler Variable

LG
Chri

Re: tab eines qtabwidget neu berechnen

Verfasst: 17. April 2018 18:37
von Chri
Habe noch ähnliche Frage:
Wie kann ich von einem tab auf das andere tab zugreifen?

Habe in tab4 die Function tabellestern() von zuvor
und möchte diese nun auch von tab3 aus auslösen:

Code: Alles auswählen

connect(ui->rB_WWmHZG, SIGNAL(pressed()), ??????? , SLOT(tabellestern()));
LG
chri