Как запретить модальному диалогу растягиваться ? |
Здравствуйте, гость ( Вход | Регистрация )
Как запретить модальному диалогу растягиваться ? |
kwisp |
28.2.2009, 12:16
Сообщение
#11
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
flankerr,
если посмотреть свойство modal в доке по диалогу. еще раз, если не хочешь наследоваться по своим причинам и тебе важно свойство модальности и что бы функция прерывалась на время показа диалога то можешь попробовать сделать так.
Сообщение отредактировал kwisp - 28.2.2009, 12:18 |
|
|
Litkevich Yuriy |
28.2.2009, 12:32
Сообщение
#12
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
kwisp, flankerr, правильно говорит, насчет модальности не модальности.
|
|
|
kwisp |
28.2.2009, 12:37
Сообщение
#13
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
Litkevich Yuriy |
28.2.2009, 12:41
Сообщение
#14
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
flankerr, еслиб тебе полностью надобыло сделать фиксированный размер (и ширину и высоту), то достаточно было бы сделать так:
т.е. для главного компоновщикапокопайся в этом направлении, может только один размер можно задать т.е. exec() - модальный да и только для QDialog, не QWidget
show() - не модальный ??? |
|
|
kwisp |
28.2.2009, 12:51
Сообщение
#15
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Litkevich Yuriy,
я всегда думал что за это отвечает void setModal ( bool modal ); господа разъясните пожалуйста что мешает сделать диалог модальным и воспользоваться show()??? |
|
|
flankerr |
28.2.2009, 12:56
Сообщение
#16
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
kwisp,
это называется "красивым" решением ? flankerr, еслиб тебе полностью надобыло сделать фиксированный размер (и ширину и высоту), то достаточно было бы сделать так: т.е. для главного компоновщикапокопайся в этом направлении, может только один размер можно задать да я сразу начал копать в сторону QLayout тока пока не нашёл как сделать фиксированнм только одно направление. кстати еслибы не QLayout то решение было бы простым вызов hide() просчитал бы все размеры элементов без вывода диалога на экран. |
|
|
kwisp |
28.2.2009, 12:59
Сообщение
#17
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
flankerr,
я же написал если не хочешь наследоваться по своим причинам и тебе важно свойство модальности и что бы функция прерывалась на время показа диалога то можешь попробовать сделать так. если не хочешь чтобы функция прерывалась не пиши последнюю строчку... я попробую объясниться на счет модальности Цитата By default, this property is false and show() pops up the dialog as modeless. Setting his property to true is equivalent to setting QWidget::windowModality to Qt::ApplicationModal. exec() ignores the value of this property and always pops up the dialog as modal. видите By default, по-моему здесь ключевое слово. хочешь модальный диалог ничего не мешает тебе использовать show(); а зацикливаться на том что Цитата т.е. exec() - модальный show() - не модальный не верно помоему. далее, елсли flankerr, намерен все равно использовать exec() и не переопределять showEvent() я пока не вижу методов решения задачи... хотя это я поторопился.... Сообщение отредактировал kwisp - 28.2.2009, 13:06 |
|
|
flankerr |
28.2.2009, 13:07
Сообщение
#18
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
kwisp, модальность в данном случае обязательна т.к. это диалог задаёт вопрос пользователю и даельнейшее выполнеие функции в частности и программы вообще возможно только после получения ответа от пользователя.
Цитата что мешает сделать диалог модальным и воспользоваться show()??? модальный диалог крутиться в своём отдельном потоке. Для запуска отдельного потока вызввается exec(); на счёт setModel Диалог может быть не модальным и работаь в отдельном потке, однако он НЕ может быть модальным и работать в потоке который его вызвал. Сообщение отредактировал flankerr - 28.2.2009, 13:11 |
|
|
kwisp |
28.2.2009, 13:24
Сообщение
#19
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
однако он НЕ может быть модальным и работать в потоке который его вызвал интересно и странно. а откуда такая информация??? а что же тогда делает последовательность setModal(1); show(); ??? модальность в данном случае обязательна т.к. это диалог задаёт вопрос пользователю и даельнейшее выполнеие функции в частности и программы вообще возможно только после получания ответа от пользователя. не уж то нельзя никак это обойтись без запуска отдельного потока как утверждается.... повесить ответ пользователя на результат диалога ничего не мешает. пользоваться setModal() тоже .... |
|
|
flankerr |
28.2.2009, 13:32
Сообщение
#20
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
kwisp,
1.Как ты себе представляешь выполнение кода без знания значения iResult , тогда как iResult будет известнен ТОЛЬКО после закрытия диалога? 2.Как ты себе представляешь выполнения кода внутри диалога если поток выполнения остановлен (см п.1) |
|
|
Текстовая версия | Сейчас: 30.12.2024, 19:25 |