Qt Блокировка вызова для отображения диалога? - PullRequest
0 голосов
/ 02 марта 2011

Я возился с Qt и QML.

Так что я хотел бы получить блокирующий вызов для отображения диалогового окна и получения ввода пользователя.Вызов гарантированно не будет в текущем потоке пользовательского интерфейса.

У меня есть объект QDeclarativeView, который я создал с помощью QML.Я могу отобразить его с помощью метода show ().Но теперь я хочу заблокировать, пока пользователь не нажмет OK / Cancel, после чего я извлеку информацию из объекта и верну информацию вызывающей стороне.

Итак, вопросы:

  • Является ли это разумным способом использования QT
  • Если да, то как мне сделать текущий поток блоком?

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Используйте Qt :: BlockingQueuedConnection, подключенный к слоту QDialog :: exec ().

http://doc.qt.io/qt-5/qt.html#ConnectionType-enum

1 голос
/ 02 марта 2011

Если вы начинаете с QDialog, вы можете использовать метод exec () для блокировки до закрытия диалогового окна. Вы можете поместить декларативный вид в диалоговое окно.

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

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