Как получить возвращаемое значение из QMetaObject :: invokeMethod

Я звоню из своей темы:

QMetaObject::invokeMethod(pProcessor,
                          "doTask",
                          Qt::QueuedConnection,
                          Q_RETURN_ARG(quint32, taskId),
                          Q_ARG(quint64,   objId),
                          Q_ARG(quint8,    intId),
                          Q_ARG(QString,   name),
                          Q_ARG(QString,   comment)
                          );

но это просто не помогает, что бы я ни делал. Если я вынимаю Q_RETURN_ARG (quint32, taskId), метод вызывается, но мне нужен taskId, который я не могу получить. Любая помощь очень ценится.

12 голосов | спросил Amy 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 10 Sep 2013 21:51:42 +0400 2013, 21:51:42

2 ответа


0

Документация для invokeMethod гласит, что

  

Возвращаемое значение вызова функции-члена помещается в ret . Если   вызов асинхронный, возвращаемое значение не может быть оценено.

Я полагаю, это происходит потому, что код ниже этого вызова функции продолжает выполняться, в то время как ваш метод doTask еще не может быть вызван , Попробуйте использовать Qt::DirectConnection.

ответил Oleg Pyzhcov 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 10 Sep 2013 22:17:04 +0400 2013, 22:17:04
0

из документов: If the invocation is asynchronous, the return value cannot be evaluated.

Затем вы должны переключиться на Qt :: DirectConnection или изменить свой дизайн. QFuture , конечно, может помочь.

Я веду блог здесь о другом решении, использующем лямбда-функцию C ++ для отправки вызовов из фоновых потоков в поток GUI (см. текст после метки «My Solution»).

ответил CapelliC 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 10 Sep 2013 22:18:08 +0400 2013, 22:18:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132