QWidgetによって継承されるクラス用のスレッドを作成したいとします。実際、QThreadで複数の継承を試してみましたが失敗し、スレッドを使って特定のメンバ関数を実行したいのです。どうすればこれを達成できますか?誰にも分かりますか?QWidgetに継承されているクラスのスレッドを作成する方法は?
0
A
答えて
0
通常のウィジェットクラスへのポインタとネストされた実行メソッドから必要なすべてのメソッドを渡すネストされたクラスを使用することができます。
2
あなたはスレッドを実装し、ウィジェットのメソッドを呼び出すラッパークラスを使用することができます。
class MyWidget : public QWidget
{
[...]
void threadMethod();
};
class MyThread : public QThread
{
[...]
MyThread(MyWidget* widget)
: mWidget(widget)
{
}
void run()
{
mWidget->threadMethod();
}
MyWidget* mWidget;
};
ただし、GUI以来、「threadMethod」のいずれかのQWidgetのメソッドを呼び出してはいけませんし、したがって、ウィジェットが属しています"main"スレッドに渡すと、QWidgetメソッドはスレッドセーフではありません!
ウィジェットとスレッドコードを完全に分離しておく方が良いでしょう。
0
GUIモジュールに属するQtクラスは、再入可能ではありません。それらはメインスレッドから実行されなければならない(MUST)。
関連する問題
- 1. QWidgetから継承するQtプラグインを作成する方法
- 2. 変数によって作成された新しいクラスに継承を追加する方法
- 3. PHP5クラス:作成されたクラスを継承していますか?
- 4. 実行時に作成されたコントロールを継承する方法は?
- 5. テーブルビュー用に単一のクラスを作成し、他のすべてのクラスで継承する方法は?
- 6. 継承された静的オブジェクトの作成方法
- 7. QTreeViewを継承してクラスを作成する
- 8. DbContextクラスから継承する方法
- 9. 継承に参加しているSQLでテーブルを作成する方法
- 10. Odooのボタンで関連/継承されたレコードを作成する方法
- 11. クラスから継承したクラスとDelphiのインターフェイスから継承するクラスを作成できますか?
- 12. コピー不可能なクラスを作成してクラスに継承する
- 13. 継承クラスのプライベートメンバーとして親クラスの変数の配列を作成する方法
- 14. 新しいスレッドでクラスを作成する方法は?
- 15. Gileadを使用して継承を継承するクラス
- 16. QWidgetのスクリーンショットを作成するには?
- 17. 継承を使用して汎用クラスを作成するにはどうすればよいですか?
- 18. すべてのクラスはどのように継承されていますか?
- 19. C++で継承すると、{クラスの前に期待される{
- 20. 親クラスから子クラスに変換する(継承する)方法は?
- 21. 継承されたクラスを単純化する有効な方法ですか?
- 22. Android:ViewViewById(R.id.xxx)をViewクラスから継承または拡張するクラスで動作させる方法
- 23. JPAでスーパークラストランジェントから継承されたマップされたフィールドを作成する方法は?
- 24. STLクラスからイテレータを「継承する」方法は?
- 25. Rでパッケージやクラスを継承する方法は?
- 26. カスタム属性クラスは継承されたAttributeUsageフラグを継承しますか?
- 27. C#で継承されたクラスプロパティをオーバーライドする方法は?
- 28. MultiLevel継承、クラスCはクラスAを継承できますか?
- 29. 継承されたwinformコントロールにイベントハンドラを追加する方法?
- 30. フォルダを作成しても継承されない権限がある
どのように失敗するのですか?ビルドエラー?ランタイムエラー? –
2つのQObjectからの複数の継承は、no-noです。これは、複数の継承における共通の祖先/菱形問題の例です。 – hmn
@ joachim:ビルドエラー:次のエラーが発生しました:エラーC2385: '接続'の曖昧なアクセス 1>ベース 'QObject'の '接続'になる可能性があります 1> 'QObject' – joki