Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Racheengel от Июль 16, 2004, 11:02



Название: При вызове модального диалога отрубается мышЪ :(
Отправлено: Racheengel от Июль 16, 2004, 11:02
Столкнулся с такой проблемой:
есть диалоговое окно (отображает прогресс выполнения и т.д.).
Сам процесс работает асинхронно (с помощью таймеров). В некоторых случаях требуется вывести сообщение об ошибке в окошке (поверх диалога с прогрессом). Все рабтает нормально, только замечен один глюк:
когда первый диалог захватил мышь (т.е. пользователь перемещает его по экрану, либо вызвал системное меню), а в этот момент отображается второй (мессага с ошибкой), то мышь отрубается, пока его не закроешь. Курсор двигается, но на кнопки не реагирует.

Есть ли лекарство? И с чем это м.б. связано? ИМНО похоже на глюк виндового оконного менеджера...


Название: Re: При вызове модального диалога отрубается мышЪ :(
Отправлено: rjaan от Июль 18, 2004, 20:55
Цитата: "Racheengel"
...первый диалог захватил мышь (т.е. пользователь перемещает его по экрану, либо вызвал системное меню), а в этот момент отображается второй (мессага с ошибкой), то мышь отрубается, пока его не закроешь. Курсор двигается, но на кнопки не реагирует.

Есть ли лекарство? И с чем это м.б. связано? ИМНО похоже на глюк виндового оконного менеджера...


Мне кажется тут проблема с флагами WFlags (http://doc.trolltech.com/3.2/qt.html#WidgetFlags-enum), надо копать в этой стороне. Но в то же время,   если в качестве вывода сообщений используется QMessagebox (http://doc.trolltech.com/3.2/qmessagebox.htm), то для вывода окошка используется exec. Поэтому , возможен конфликт. Хотя я с этим не сталкивался. Т.к.  
QMessagebox (http://doc.trolltech.com/3.2/qmessagebox.htm) использую для вывода сообщений об подтверждения-запроса операции или об критической ошибки приложения с остановкой выполнения до нажатия кнопки последнего . А если надо накидывать всплывающие окошки с сообщениям, то лучше использовать  QDialog (http://doc.trolltech.com/3.2/qdialog.htm) и отображать show() (http://doc.trolltech.com/3.2/qwidget.html#show), созданного с соответствующими флагами WFlags (http://doc.trolltech.com/3.2/qt.html#WidgetFlags-enum).