Ich habe die folgenden Klassen:QTimer von einer anderen Klasse starten
class MainWindow : public QMainWindow
{
public:
void StartTimer()
{
timer = new QTimer(this);
timer.start(100);
}
private:
QTimer *timer;
};
class AnotherClass
{
public:
MainWindow *window;
void runTimer()
{
window->StartTimer();
}
};
der Fensterzeiger Unter der Annahme, richtig auf die Hauptfenster zeigt ist, wenn ich versuche, runTimer()
zu nennen, erhalte ich diesen Fehler:
QObject: Cannot create children for a parent that is in a different thread.
(Parent is MainWindow(0x7fff51ffe9f0), parent's thread is QThread(0x7fd1c8d001d0), current thread is QThread(0x7fd1c8f870c0)
QObject::startTimer: Timers can only be used with threads started with QThread
Meine Vermutung für diesen Fehler war, dass, da runTimer von einem anderen Thread aufgerufen wurde, es auch versuchte, in demselben Thread zu initialisieren? anstelle des Hauptfensters?
Wenn ich den Timer in der Standard-Konstruktor des Hauptfensters initialisieren erhalte ich
QObject::startTimer: Timers cannot be started from another thread
Wie kann ich eine QTimer erzählen von einer anderen Klasse zu beginnen?
hatte es zu ändern zu verbinden (diese, SIGNAL (signalStartTimer), Fenster, SCHLITZ (Starttimer), Qt :: QueuedConnection); aber ansonsten hat es geklappt – Alex