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

War es hilfreich?

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:

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top