私はこのようなクラスを持っています
class GUI : public QWidget, public QThread
上記を実行すると、接続信号に関するエラーが発生します。The error says Reference to "connect" is ambiguous
。両方から継承する方法はありますか?
ありがとうございました
できません。QWidget
とQThread
から(非仮想的に)継承しますQObject
。したがって、仮想派生がないためQObject
、コンパイラを混乱させる2つのコピーがあります。QObject
このように特別に設計されました。見る:
これを回避したとされる人もいますが(現在リンクは見つかりませんが、Googleにあります。2週間前に同じ問題が発生しました)、せいぜい安全ではありません。
編集:おそらく最善の方法は、別のオブジェクトをQThreadから継承し、そのオブジェクトをGUI
クラスのメンバーとして保持することです。これは、ほとんどの人がこの問題で行う一種の回避策です。
QWidgets
およびGUI関連のオブジェクトは、アプリケーションのメインスレッドとは異なるスレッドに存在しません。両方を継承しないでください。moveToThread()
ウィジェットの関数を呼び出すこともできません。