私は非常に気まずいバグに遭遇しました - は、ブロックされたダイアログを表示して、trigger
と呼ばれる私のサーバーを停止させました(例えば、閉鎖されました)。コードをクリアしてスロットを非同期で呼び出してください
回避策を見つけました。私はQt::QueuedConnection
を使用してQAction::trigger
をスロットに信号void triggerWorkaround()
を接続して、私はそれを発する:
QObject::connect(this, &HackClass::triggerWorkaround, targetAction_.data(), &QAction::trigger, Qt::QueuedConnection);
emit triggerWorkaround();
QObject::disconnect(this, nullptr, targetAction_.data(), nullptr);
しかし、それは混乱3行のコードです。これを行うには混乱のない方法がありますか?私はQMetaObject::invokeMethod
を見つけましたが、率直に言って、私の現在のソリューションよりも10倍も混乱しています。また、私は文字列としてメソッド名を使用したくない!
サーバーのイベントループ用に別のスレッドを作成することがあります。 – Velkan