Russian Qt Forum
Ноябрь 24, 2024, 05:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Дырка QMessageBox  (Прочитано 19292 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #30 : Ноябрь 30, 2015, 13:12 »

... потому что класса QWindow отдельного нет.
Давным-давно есть  Улыбающийся

А, и в самом деле, есть в 5.х. Но не так уж давным давно... всего-то 3 года. Так с этим классом и надо работать, а не с QWidget. У него свои методы для модальности, даже isModal() есть.

Вот ситуевина. Есть плагины с UI в виде модальных окон с кнопками Ok, Cancel. Это в принципе устраивает, НО нужна возможность отрендерить preview не нажимая кнопку Ok, т.е. не выходя из UI плагтна. Ладно, добавляем горячую клавишу, по ней preview рендерится и показывается в новом окне (или в старом если preview уже вызывалось). Но это новое окно нельзя даже передвинуть - не дает окно модальное плагина

И что, рассказывать юзеру что он должен сто раз жать Ok и снова открывать плагин - потому что, дескать, вообще-то модальность... Так юзера это мало волнует, ему нужно удобство
Поместите кнопки Ok и Cancel руками на окно, в котором рендеринг, сделайте спрятанными, показывайте их когда рендеринг завершился, при нажатии любой скрывайте. Если окон много, сделайте, чтобы окно с рендерингом всплывало поверх всех при появлении кнопок. Можно еще "бряк" издавать, но отключаемый в настройках, всплытие тоже лучше отключаемое. Модальное окно вообще не будет нужно. Но это всё уже оффтопик.
Записан

2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Ноябрь 30, 2015, 13:21 »

Так с этим классом и надо работать, а не с QWidget. У него свои методы для модальности, даже isModal() есть.
Не вдаваясь в детали - ничего нового (по сравнению с QWidget) там не получить. Так, "выделили сущность" что в общем хорошо

Поместите кнопки Ok и Cancel руками на окно, в котором рендеринг, сделайте спрятанными, показывайте их когда рендеринг завершился, при нажатии любой скрывайте. Если окон много, сделайте, чтобы окно с рендерингом всплывало поверх всех при появлении кнопок. Можно еще "бряк" издавать, но отключаемый в настройках, всплытие тоже лучше отключаемое. Модальное окно вообще не будет нужно.
Непонимающий А окно плагина куда я дену? Которое делал автор плагиеа (не я) и которое должно быть модально

Но это всё уже оффтопик.
Ну да, сразу в кусты (как Верес Улыбающийся)
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #32 : Ноябрь 30, 2015, 13:42 »

А окно плагина куда я дену? Которое делал автор плагиеа (не я) и которое должно быть модально

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

Ну да, сразу в кусты (как Верес Улыбающийся)

Я могу не в кусты. Но у меня условие - в проекте я работаю только руководителем проекта, с соответствующей зарплатой.
Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #33 : Ноябрь 30, 2015, 14:08 »

Igors как обычно нашёл тему, которая ему неинтересна, нашёл проблему, которую ему не надо решать, и теперь пинает автора со словами - а ну реши мне ради прикола Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #34 : Ноябрь 30, 2015, 14:24 »

Если им невозможно управлять, то какой смысл вообще было задавать эти вопросы?
Так у Вас же вроде "много плагинов". Они же должны иметь какие-то настраиваемые параметры. Вот у меня по выбору из меню управление отдается плагину, и тот показывает модальный диалог где эти параметры можно редактировать. А у Вас как?

Я могу не в кусты. Но у меня условие - в проекте я работаю только руководителем проекта, с соответствующей зарплатой.
Ну зачем же мне руководитель проекта который не может 2 окна сделать активными? Улыбающийся  Такого и юниором брать не резон, какая уж тут зряплата...

Igors как обычно нашёл тему, которая ему неинтересна, нашёл проблему, которую ему не надо решать, и теперь пинает автора со словами - а ну реши мне ради прикола Веселый
А Вересу, как обычно, сорока на хвосте чего-то принесла, да он не может вспомнить что и как  Улыбающийся
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #35 : Ноябрь 30, 2015, 16:32 »

Так у Вас же вроде "много плагинов". Они же должны иметь какие-то настраиваемые параметры. Вот у меня по выбору из меню управление отдается плагину, и тот показывает модальный диалог где эти параметры можно редактировать. А у Вас как?

А у меня архитектура плагинов разработана мной, и у них есть средства для их общения - автоматически устанавливаемые при загрузке плагинов соединения через сокеты, с собственным реестром таких соединений. Плагины знают, кто когда загрузился, что можно с ним и его окнами делать (точнее попросить сделать), и т.д. И настройки у них есть, их сохраняет и восстанавливает общая среда-интегратор, в ней есть унифицированный редактор настроек. Всё заранее продуманно.

Ну зачем же мне руководитель проекта который не может 2 окна сделать активными? Улыбающийся  Такого и юниором брать не резон, какая уж тут зряплата...

Я то как раз могу ВСЁ... Но сначала контракт - потом решение. Наоборот не бывает.
« Последнее редактирование: Ноябрь 30, 2015, 16:35 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #36 : Декабрь 01, 2015, 09:57 »

Я то как раз могу ВСЁ...
На фоне трепыханий в мелких подробностях UI такие заявления воспринимаются "наоборот" Улыбающийся

Но сначала контракт - потом решение. Наоборот не бывает.
То есть разруливание 2 окон - серьезная проблема, ее решение должно быть обязательно подкреплено контрактом?  Улыбающийся
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #37 : Декабрь 01, 2015, 12:55 »

То есть разруливание 2 окон - серьезная проблема, ее решение должно быть обязательно подкреплено контрактом?  Улыбающийся

Такой глупый вопрос мог задать только тот, кто никогда не руководил проектами.

Всё, закрыта тема. Если будет оффтопик дальше, закрою "физически".
Записан

2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #38 : Декабрь 01, 2015, 14:47 »

Такой глупый вопрос мог задать только тот, кто никогда не руководил проектами.

Всё, закрыта тема. Если будет оффтопик дальше, закрою "физически".
Пожалуйста командуйте у себя дома (если жена разрешит  Улыбающийся)
« Последнее редактирование: Декабрь 01, 2015, 15:16 от Igors » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #39 : Декабрь 03, 2015, 07:14 »

Мужики, я честно скажу, тему внимательно не читал.
Но, вы не забыли, что метод QDialog::exec()  (унаследованный QMessageBox-ом) делает так:


Код
C++ (Qt)
   bool deleteOnClose = testAttribute(Qt::WA_DeleteOnClose);
   setAttribute(Qt::WA_DeleteOnClose, false);
 
   d->resetModalitySetByOpen();
 
   bool wasShowModal = testAttribute(Qt::WA_ShowModal);
   setAttribute(Qt::WA_ShowModal, true);
...
а по завершении восстанавливает исходные свойства
Записан

Юра.
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #40 : Декабрь 03, 2015, 12:35 »

Мужики, я честно скажу, тему внимательно не читал.

Прочитайте, заметите, что не работает даже метод show().
Записан

2^7-1 == 127, задумайтесь...
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 22.