2011-11-02 2 views
2

Я очень заинтересован в повторном использовании системы метаобъект и общие функциональные возможности, но не знаю точно:Многократное QtCore модуль в любом проекте C++

  • Имеет QMetaObject :: InvokeMethod() зависимость от цикла обработки событий?
  • Могу ли я загружать плагины без экземпляра QCoreApplication?
  • ...

Некоторые список ограничений использования этого модуля в не-кварт применения/в неосновного потоке было бы весьма признателен.

UPDATE:

Я отправил same question в Qt сообщества.

ответ

0

Пробег цикла события является необязательным и является потоком. Если вы не обрабатываете события в заданном потоке, он не нужен.

invokeMethod не имеет зависимостей от цикла событий, если вы вызываете методы объектов, которые живут в потоке, где вы вызываете этот метод. Если вы вызываете методы объектов, которые живут в других потоках, эти потоки должны будут запускать цикл событий, даже если только периодически. В конце концов, они могут позвонить processEvents в четко определенных точках. Вызов межсетевого интервала эквивалентен отправке события в очередь событий потока.

Я проверю, работает ли механизм плагина без экземпляра QCoreApplication, но этот экземпляр не повредит вам. Просто создайте его и забудьте об этом. Вам do необходимо запустить цикл событий в основном потоке или в любом потоке, если на то пошло.

Обратите внимание, что QPluginLoader - это не то же самое, что и QLibrary, вам необходимо изучить ваши потребности и выяснить, что вы хотите.

Не-gui QCoreApplicationcan be created in an arbitrary thread, и его цикл событий может работать там. В Windows можно создать QApplication в произвольном потоке.