этот ответ

лкнулся с довольно странной ошибкой -QAction::trigger вызвал диалоговое окно блокировки, которое вызвало мой сервер, который вызвалtrigger застрять (например, не в состоянии обрабатывать сигналы сокета, пока диалог не был закрыт).

Я нашел обходной путь. Подключаю сигналvoid triggerWorkaround() в слотQAction::trigger с помощьюQt::QueuedConnection и я испускаю это:

QObject::connect(this, &HackClass::triggerWorkaround, targetAction_.data(), &QAction::trigger, Qt::QueuedConnection);
emit triggerWorkaround();
QObject::disconnect(this, nullptr, targetAction_.data(), nullptr);

Но это три строки запутанного кода. Есть ли не путающий способ сделать это? я нашелQMetaObject::invokeMethod, но, честно говоря, это в 10 раз более запутанно, чем мое текущее решение. Также,Я не хочу использовать имя метода в качестве строки!

Ответы на вопрос(1)

Ваш ответ на вопрос