Я не уверен, что это проще, чем сигналы и слоты, но в некоторых случаях мне нравится использовать пользовательские события.
В некоторых подклассах QObject
, таких как MyObject
, вы переопределяете customEvent()
навыполните некоторые действия, основанные на одном из ваших пользовательских событий.
Вы можете опубликовать пользовательское событие на MyObject
из любого потока, используя QCoreApplication::postEvent()
.Это потребует от вызывающего абонента знать немного Qt.Чтобы обойти это, я хотел бы написать метод на MyOjbect
, который инкапсулирует создание пользовательского события и отправку его себе.
Отправка асинхронна, и выполнение в customEvent()
выполняется в потоке графического интерфейса.
Если вам нужно передать данные, подкласс QEvent
с установщиками и получателями.
Это довольно краткий обзор, но документы должны помочь.Если у вас есть проблемы, я могу опубликовать код.