Wie kann ich beide erben von QWidget und QThread?
Frage
habe ich eine Klasse wie dieses
class GUI : public QWidget, public QThread
Wenn ich die oben i Fehler über Verbindungssignal erhalten. The error says Reference to "connect" is ambiguous
. Gibt es eine Möglichkeit zu vererben von beiden?
Danke
Lösung
Sie können nicht. Sowohl QWidget
und QThread
vererben (nicht virtuell) aus QObject
. Sie deshalb nicht über virtuelle Ableitung, also zwei Kopien von QObject
, die die Compiler verwechselt. QObject
wurde speziell auf diese Weise gestaltet. Siehe auch:
- http://lists.trolltech.com/qt-interest/ 2006-10 / msg00711.html
- http://www.qtforum.org/article/ 23295 / Problem-Öffnung-the-qfiledialog.html
Es gibt einige, die angeblich um das ging (kann nicht finden den Link im Moment, aber es ist da draußen auf Google, ich hatte das gleiche Problem vor zwei Wochen), aber es ist nicht sicher am besten.
Edit: der beste Weg wäre wahrscheinlich ein anderes Objekt, vererben QThread zu haben sein und hält das Objekt als Mitglied in Ihrer GUI
Klasse. Das ist die Art von Problem zu umgehen den meisten Menschen in dieser Angelegenheit zu tun.
Andere Tipps
QWidgets
und GUI verwandte Objekte sein con nicht in verschiedenen Threads als die Anwendung Hauptthread. Sie sollten nicht beide erben. Sie können nicht auch die moveToThread()
Funktion eines Widgets aufrufen.
Sie können nicht von mehreren QObjects erben.
Sie können von einem erben und die andere eine Membervariable und von dort aus arbeiten machen.
class GUI : public QWidget
{
QThread myThread;
};
Sie haben Ihre Klasse GUI genannt - ist dies die Haupt GUI Ihres Programms? Beispiele finden Sie in den Qt Beispiele Ordner - sie haben Beispielprogramme sowohl auf GUI ist und Themen .