crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
porex
  опции профиля:
сообщение 15.12.2011, 14:21
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 10
Регистрация: 15.12.2011
Пользователь №: 3071

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток!
Есть проект с несколькими формами, иерархия такая:
Цитата
MainWindow (QWidget)
>>>|
>>>|----ConfigForm(QWidget)
>>>>>>>>|
>>>>>>>>|----PatternDialog(QDialog)

Первая форма создается и разворачивается на весь экран:
MainWindow w;
w.setWindowFlags(Qt::FramelessWindowHint);
w.showFullScreen();

Вторая форма создается динамически по нажатию на кнопку:
ConfigForm *Config=new ConfigForm(NULL);
Config->setAttribute(Qt::WA_DeleteOnClose,true);
Config->setWindowFlags(/*Qt::X11BypassWindowManagerHint|*/Qt::FramelessWindowHint);
//Config->setWindowModality(Qt::WindowModal);
//Config->show();
Config->showFullScreen();
/*Config->raise();
Config->activateWindow();*/

А PatternDialog так:
TPatternDialog PatternDialog(this);
//PatternDialog.setAttribute(Qt::WA_DeleteOnClose,true);
PatternDialog.setWindowModality(Qt::WindowModal);
//PatternDialog.setWindowFlags(Qt::WindowStaysOnTopHint);
PatternDialog.show();
PatternDialog.raise();
PatternDialog.activateWindow();
PatternDialog.exec();

Так вот если при создании ConfigForm в качестве родителя указать MainWindow, то форма не разворачивается на весь экран, а если передать NULL, то ConfigForm разворачивается на весь экран, но при создании PatternDialog на передний план вылазит MainWindow.
Как с этим бороться? Да, забыл, пишу под Ubuntu.

Сообщение отредактировал porex - 17.12.2011, 16:21
Прикрепленные файлы
Прикрепленный файл  Test_.tar.gz ( 5.39 килобайт ) Кол-во скачиваний: 428
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 15.12.2011, 17:58
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Естественно, ведь при активации PatternDialog активируется и его родитель т.е. MainWindow. Можно например сразу после активации PatternDialog активировать объект ConfigForm. Или вообще не активировать PatternDialog. Или создавать его без родителя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 15.12.2011, 18:16
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


Cделай всех сиротами.

ConfigForm *Config=new ConfigForm();

TPatternDialog PatternDialog;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 15.12.2011, 18:29
Сообщение #4





Гости








    


Цитата(ilyabvt @ 15.12.2011, 17:58) *
Естественно, ведь при активации PatternDialog активируется и его родитель т.е. MainWindow. Можно например сразу после активации PatternDialog активировать объект ConfigForm. Или вообще не активировать PatternDialog. Или создавать его без родителя.

Как раз когда активируется MainWindow, у PatternDialog родитель ConfigForm без родителя.
Необходимо чтобы MainWindow разворачивалась на весь экран, ConfigForm разворачивалась навесь экран(есть родитель или нет все равно), а PatternDialog был модальным со своим размером.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
porex
  опции профиля:
сообщение 15.12.2011, 18:30
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 10
Регистрация: 15.12.2011
Пользователь №: 3071

Спасибо сказали: 0 раз(а)




Репутация:   0  


блин, от гостя написал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 15.12.2011, 21:47
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Цитата
ConfigForm разворачивалась навесь экран(есть родитель или нет все равно)

Для этого ему надо поставить флаг Qt::Window.

А в остальном по вашему описанию все и так есть, MainWindow и ConfogForm разворачиваются на весь экран. Четче опишите в чем именно проблема.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
porex
  опции профиля:
сообщение 15.12.2011, 21:55
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 10
Регистрация: 15.12.2011
Пользователь №: 3071

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ilyabvt @ 15.12.2011, 22:47) *
Цитата
ConfigForm разворачивалась навесь экран(есть родитель или нет все равно)

Четче опишите в чем именно проблема.

Проблема в следующем:
1. Если при создании формы ConfigForm указать родителем MainWindow, то ConfigForm не разворачиватся на весь экран;
2. Если создать форму ConfigForm без родителя, то она разворачивается на весь экран, но при создании и отображении PatternDialog, на передний план вылазит MainWindow, хотя должна быть сзади.
В первом посте вложение, попробуйте у себя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
porex
  опции профиля:
сообщение 16.12.2011, 13:11
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 10
Регистрация: 15.12.2011
Пользователь №: 3071

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BlueIceScream @ 15.12.2011, 19:16) *
Cделай всех сиротами.

ConfigForm *Config=new ConfigForm();

TPatternDialog PatternDialog;

Тогда PatternDialog не будет модальным
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 16.12.2011, 15:50
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


PatternDialog.setWindowModality(Qt::ApplicationModal);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
porex
  опции профиля:
сообщение 16.12.2011, 20:02
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 10
Регистрация: 15.12.2011
Пользователь №: 3071

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, помогло, PatternDialog модальное, только теперь другая напасть. Если попытаться убрать заголовок окна
PatternDialog.setWindowFlags(Qt::FramelessWindowHintl);

То все контролы окна PatternDialog отображаются в ConfigForm (PatternDialog как бы становится прозрачным). Почему так?
Это особенность менеджера окон в Linux'e?

Сообщение отредактировал porex - 17.12.2011, 16:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 21.4.2025, 16:00