QObject::startTimer: QTimer can only be used with threads started with QThread
-
Hallo!!
Der Titel verrät die Fehlermeldung, die erscheint, wenn ich mein Programm starte. Leider bin ich ziemlich ratlos, was diesen Fehler verursacht, da ich mein Programm sehr stark verändert und währendessen nicht getestet habe
Ich weiß jetzt nicht was ich posten soll, da es mitlerweile aus mehreren Dateien besteht, allerdings habe ich eine Vermutung:
Meine 3 QGraphicViews nutzen eine von QGraphicItem und QObject abgeleitete Klasse:class glItem : public QObject, public QGraphicsItem;
Ich schätz da läuft irgendwas mit QObject falsch? QTimer oder ähnliches habe ich noch nie benutzt und auch keine Erfahrung damit... Welche Informationen braucht ihr?
THX
-
Halte ich für problematisch diese Art der Mehrfachvererbung.
Ist QGraphicsItem nicht selber schon von QObject abgeleitet?
Wozu dann noch zusätzlich von QObject ableiten?
-
phlox81 schrieb:
Halte ich für problematisch diese Art der Mehrfachvererbung.
Ist QGraphicsItem nicht selber schon von QObject abgeleitet?
Wozu dann noch zusätzlich von QObject ableiten?Weil es meineswissens eben nicht von QObject abgeleitet ist ... bei einem Versuch ohne Mehrfachvererbung funktionieren die Signals/Slots auch nicht! Eine Lösung ohne selbige wäre wohl problematisch, weshalb ich nur ungern darauf verzichten würde.
-
So ... da mir die Meldung keine Ruhe gelassen hat, hab ich jetzt das halbe Programm auskommentiert (
) und habe die Meldung auf meine QGraphicsScene-Klasse zurückführen können. Im Konstruktor selbiger stand folgendes:
setItemIndexMethod(QGraphicsScene::BspTreeIndex);
Warum ist das nicht ratsam? ....
.... bis hierhin jedenfalls schonmal danke für eure rauchenden Köpfe
-
Hm, also mit dem Posten von Einzeilern kommen wir da wohl nicht weiter
Wie sieht denn der gesamte Konstruktor aus?
So generel vom Standpunkt C++ her, ist an der Zeile nix falsch.
-
phlox81 schrieb:
Hm, also mit dem Posten von Einzeilern kommen wir da wohl nicht weiter
Wie sieht denn der gesamte Konstruktor aus?
So generel vom Standpunkt C++ her, ist an der Zeile nix falsch.Eigendlich ist das schon fast der gesamt Konstruktor...
glScene::glScene(QString l) : QGraphicsScene() { // setItemIndexMethod(QGraphicsScene::BspTreeIndex); label = l; aktive = false; }
Allerdings steht folgendes als globale Variable in mainwindow.cpp, also bevor das Programm initialisiert wird:
glScene *frontScene = new glScene("Front"); glScene *sideScene = new glScene("Side"); glScene *topScene = new glScene("Top");
Global, da die meisten meiner Klassen auf meine Scenes zurückgreifen und eine übergabe als Parameter erscheint mir dabei etwas unübersichtlich ... Vielleicht liegt ja dort der Haken?