Название: Проблема с вызовом диалоговых окон в делегате Отправлено: AntonH851 от Июль 23, 2010, 08:40 Здравствуйте!
При сохранении данных в модели (setModelData) мне нужно при невыполнении некоторых условий выдать MessageBox. Сообщение вылетает, но при его закрытии происходит "крах" приложения. Причем на строчке метода installEventFilter в файле qobject.cpp. Пробовал указывать родителя для диалога и просто 0 ставил, результат одни и тот же Неужели нельзя диалоги из делегата выдавать? пробовал в другом делегате использовать QInputDialog тоже самое.... Есть ли способ как-то это обойти или исправить? Название: Re: Проблема с вызовом диалоговых окон в делегате Отправлено: SABROG от Июль 23, 2010, 09:00 Думаю возможно. Тебе нужно лишь выложить на форум исходники, чтобы понять что ты делаешь не так.
Название: Re: Проблема с вызовом диалоговых окон в деле Отправлено: AntonH851 от Июль 23, 2010, 10:40 если это что то объяснит, то вот строки вызова сообщения:
Код: QMessageBox::critical(0, А вот так работает: Код: QMessageBox *mb = new QMessageBox; Но если вместо show() написать exec() то опять программа завершается аварийно.... а мне то нужно чтоб выполнение остановилось пока диалог не закрыт Название: Re: Проблема с вызовом диалоговых окон в деле Отправлено: BRE от Июль 23, 2010, 11:08 Предположу.
Делегат отслеживает изменения в view, устанавливая фильтр событий. Скорее всего происходит следующее: из обработчика фильтра событий вызывается метод твоего делегата в котором ты пытаешься крутить эту очередь дальше (вызываешь exec()), это и приводит в краху. Но если вместо show() написать exec() то опять программа завершается аварийно.... Скорее всего придется вынести этот функционал из делегата.а мне то нужно чтоб выполнение остановилось пока диалог не закрыт Название: Re: Проблема с вызовом диалоговых окон в делегате Отправлено: AntonH851 от Июль 26, 2010, 11:06 Проблема была решена путем вызова диалога не в делегате а в виджете, используемом в качестве редактора для делагата, т.е. до того как будет вызван setModelData()
|