ein Klick auf den Button sendet bei mir ein SIGNAL zu meinem SLOT buttonConnectCamClicked(). Dieser soll den Button erst mal disablen, welcher nach ausführen eines zweiten threads (die member-Funktion connectDisconnectCam()) wieder enabled werden soll. Der zweite thread benötigt ca. 2 sekunden, bis er den Button wieder enablen würde.
Kommentiere ich nun die Zeile zum enablen oder die zum disablen des Buttons aus, läuft das Programm durch. Lasse ich jedoch beide Zeilen (wie im Code zu sehen) stehen, bekomme ich diese Fehlermeldung:
- ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 147fe5c0. Receiver '' (of type 'QPushButton') was created in thread 3e4710", file kernel\qcoreapplication.cpp, line 505
QObject::killTimers: timers cannot be stopped from another thread
Code: Alles auswählen
void serialPort::buttonConnectCamClicked(void)
{
/* disable the button */
pButtonGetComPorts->setEnabled(false);
/* call in another thread: connectDisconnectCam(); */
QFuture<void> future = QtConcurrent::run(this, &serialPort::connectDisconnectCam);
}
void serialPort::connectDisconnectCam(void)
{
// .... ca. 2 Sekunden Wartezeit ...
pButtonGetComPorts->setEnabled(true);
}- QWinEventNotifier: event notifiers cannot be disabled from another thread