Как запустить процесс обработки событий Qt без блокировки?

Это мой сценарий: у меня есть dll (с Qt в бэкэнде и без запуска цикла событий). Я могу выполнить связь сигнального слота с этой dll (есть только один поток). Я хотел бы использовать возможности QFileSystemWatcher в этой dll. Но похоже, QFileSystemWatcher запускает свой собственный поток и не может связаться с моим основным потоком, так как нет процесса обработки событий.

Итак, в основном мне нужен способ начать обработку событий без блокировки!


person Saroj Patro    schedule 26.12.2013    source источник
comment
Чего именно вы пытаетесь достичь с помощью QFileSystemWatcher? Кроме того, нет процесса обработки событий Qt. Возможно, вы ищете QEventLoop. В любом случае он будет блокироваться, но в зависимости от конкретного варианта использования это может быть отвлекающим маневром.   -  person lpapp    schedule 26.12.2013
comment
Да, это основной цикл событий. Я хотел бы использовать средства QFileSystemWatcher для обновления, когда в конкретном файле есть какие-либо изменения. Я могу использовать его для повторного чтения файла.   -  person Saroj Patro    schedule 26.12.2013
comment
Ну, моя dll используется как API, а это значит, что я не хочу блокировать, и все было в одном потоке. По этой причине им не был создан цикл событий.   -  person Saroj Patro    schedule 26.12.2013


Ответы (1)


Итак, в основном мне нужен способ начать обработку событий без блокировки!

Итак, в основном вы хотите использовать QEventLoop функции без использования QEventLoop на основе обсуждения комментариев. QEventLoop должен быть "блокирующим" по своей сути, чтобы на самом деле иметь цикл событий.

Вы всегда можете создать «блокирующий» поток с циклом событий внутри, но тогда ваше управление сигнальным слотом может быть привязано к этому конкретному потоку.

Это не обычный способ использования цикла событий, но в зависимости от вашего конкретного сценария этого может быть достаточно в этом особом случае.

person lpapp    schedule 26.12.2013
comment
Будет ли возможным решением создание еще одного потока с собственным циклом обработки событий? Этот цикл на основе потока будет заблокирован для обработки входных данных/событий от пользователя, но основной поток будет работать разблокированным. - person Saroj Patro; 26.12.2013