Приоритет событий по умолчанию в Qt - PullRequest
0 голосов
/ 04 июня 2019

Каков приоритет событий по умолчанию в Qt? Все они имеют одинаковый приоритет (какой?), Или некоторые из них более равны, чем другие? Согласно документации, «в особом случае QTimer с таймаутом 0 истечет, как только все события в очереди событий оконной системы будут обработаны». Означает ли это, что Qtimer с нулевым тайм-аутом создает события с наименьшим возможным приоритетом? А как насчет ненулевых таймаутов?

1 Ответ

1 голос
/ 04 июня 2019

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

По умолчанию все события, созданные самим Qt, публикуются с приоритетом по умолчанию, равным нулю (0).и нет способа изменить его, если не отредактировать код Qt (и здесь нет причин для этого).Понятие приоритета для событий имеет значение, только если вы публикуете события самостоятельно, и тогда у вас есть только два варианта: Qt::HighEventPriority, или любой приоритет выше нуля, означает, что ваши события будут опубликованы перед событиями, опубликованными самим Qt.,И наоборот, Qt::LowEventPriority, или любой приоритет ниже нуля, означает, что ваши события будут опубликованы за всеми событиями, опубликованными самим Qt.

Конечно, относительный приоритет ваших собственных событий будет иметь значение, например, ваши собственные событияс приоритетом 2 будет стоять в очереди перед вашими собственными событиями с приоритетом 1. Но собственные события Qt всегда имеют приоритет только 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...