@provokator2020

Почему QGuiApplication не испускает сигнал?

Есть код:

#include <qapplication.h>
#include <qguiapplication.h>
#include <qscreen.h>
#include <qlist.h>
#include <qdebug.h>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);

    for (;;) {
        auto countMonitor = QGuiApplication::screens();
        qDebug() << countMonitor.size();
    }

    return a.exec();
}

Подключаю 2 монитора, запускаю программу, выводится 2, если я отключу 1 из мониторов (во время выполнения) как выводилось 2 так и будет выводится. Если я запущу программу с 1 включённым монитором, выводится 1, если подключу 2ой монитор (во время выполнения) как выводилось 1 так и будет выводиться. Почему так?
  • Вопрос задан
  • 439 просмотров
Решения вопроса 1
Проверил у себя на компьютере. Windows 10, Qt 5.15.2. Действительно, при подключении / отключении монитора сигналы не вызываются. После беглого просмотра исходников Qt пришел к выводу, что для Windows данный функционал не реализован.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Flysink
В системе когда добавляется новый монитор, отправляется сигнал, так как у тебя в бесконечном цикле происходит подсчет количество мониторов, основной цикл событий не может пройтись по событиям до тех пор, пока ты не выйдешь из своего цикла.
Попробуй добавить:
QGuiApplication::processEvents();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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