2017-07-25 3 views
1

Ich habe eine Checkbox mit einem Schlitz genanntQt: Slot nicht auf manuellem Funktionsaufruf genannt

void MainWindow::on_checkBoxPhaseUnwrap_stateChanged(int state) 

Diese automatisch verbunden ist.

Konstruktor Hauptfenster ist wie dies

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow), 
{ 
    ui->setupUi(this); 
    setupWidgets(); 
} 

In setupWidgets I den Wert der Checkbox gesetzt

ui->checkBoxPhaseUnwrap->setChecked(true); 

jedoch der Schlitz nicht genannt wird, und somit Basis, um die Daten im Hintergrund nicht aktualisiert.

Sobald das Fenster angezeigt wird, kann ich auf das Kontrollkästchen klicken und der Steckplatz wird wie üblich aufgerufen. Warum wird es nicht aufgerufen wenn ich anrufe setChecked Hinweis: Im GUI-Designer ist der Standardwert bereits checked. Ist das der Grund?

+0

Ist die Funktion mit dem Argument falsch Auslöser der Schlitz Aufruf? – rubenvb

+0

Können Sie uns zeigen, wie Sie sich verbinden? –

+0

Es gibt keine Verbindung von selbst. Dies geschieht automatisch in Qt. –

Antwort

2

Im GUI-Designer ist der Standardwert bereits aktiviert. Ist das der Grund?

Ja void QCheckBox::stateChanged(int state)

Dieses Signal ausgesendet wird, wenn die Zustandsänderungen des Kontrollkästchen, das heißt, wenn die Schecks Benutzer oder unchecks es.

Das bedeutet, ist es nicht ausgegeben, wenn Sie versuchen, Qt::Checked-Qt::Checked Zustand zu ändern.

Lösung selbst emittieren würde, um signalisieren:

In setupWidgets hinzufügen

emit ui->checkBoxPhaseUnwrap->stateChanged(Qt::Checked); 
Verwandte Themen