QComboBox verbinden
Brauche ich eine Funktion aufzurufen, die mit currentIndex+1, wenn die currentIndex einer QComboBox änderungen. Ich habe Mühe mit der syntax an diesem morgen:
//call function readTables(int) when currentIndex changes.
connect(ui->deviceBox, SIGNAL(currentIndexChanged()),
SLOT( readTables( ui->deviceBox->currentIndex()+1) );
Fehler: expected ')'
SLOT( readTables(ui->deviceBox->currentIndex()+1) );
Hinzufügen schließen ) funktioniert nicht...!
Schreiben Sie als
Wenn Sie in der Qt-version 5+ und c++11, dann schreiben Sie
Ich empfehle Ihnen, Lesen Sie die
connect(ui->deviceBox, SIGNAL(currentIndexChanged(int)), SLOT(readTables(int));
. Die readTables(int)
slot wird aufgerufen mit dem aktuellen index als argument.Wenn Sie in der Qt-version 5+ und c++11, dann schreiben Sie
connect(ui->deviceBox, SIGNAL(currentIndexChanged(int)), [this]( int idx ) { readTables( idx + 1 ); } );
Ich empfehle Ihnen, Lesen Sie die
Qt Signals and Slots
Dokumentation: qt-project.org/doc/qt-4.8/signalsandslots.htmlInformationsquelleAutor Jocala | 2015-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten. Wenn Sie können die Funktion " ändern
readTables
dann kann man nur schreiben:und in
readTables
Zweiten: Wenn Sie mit Qt 5+ und c++11 haben, schreiben Sie einfach:
Dritten: Wenn Sie nicht ändern können
readTables
und kann nicht mit c++11 schreiben Sie Ihren eigenen slot (sagenreadTables_increment
) wie folgt:und schließen signal:
InformationsquelleAutor borisbn
QComboBox::currentIndexChanged
erwartet entweder eine QString oder eine int als einziges argument. Sie haben 2 Fehler hier:currentIndexChanged()
was es nicht gibtSLOT
wie die slot-argument, Wonach die slot-Unterschrift; eher, Sie versuchen, pass-argument "on-the-fly", die sowas nicht erlaubt.@borisbn Vorschlag ist ziemlich gut, wenn Sie ok mit der Verwendung von C++ Lambda-Ausdrücke.
Ansonsten müssen Sie deklarieren Sie eine neue slot mit einer
int
argument:InformationsquelleAutor alediaferia