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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перекрытие окон  (Прочитано 4949 раз)
uriel
Гость
« : Май 17, 2008, 19:03 »

Возможно, вопрос немного глупый, но я так и не понял, в чём причина.
Имеется окно наследника QWizard, в него добавлена собственная кнопка, которая связана со слотом. В этом слоте создаётся новый виджет и вызывается для него show(). Проблема в том, что этот виджет появляется в левом верхнем углу экрана и при перемещении его в область окна QWizard'а скрывается оным. Пытался поставить ему флаг AlwaysStayOnTop - не помогло. Сходу в ассистенте не нашёл ничего подобного.
Как можно задать, какое окно будет перекрывать какое?
P.S. Новый виджет имеет родителем QWizard, хотя можно оставить и без предка - результат один.
P.P.S. Можно ли как-то задать начальную координату окна не в координатах, а навроде Center, BottomLeft, etc?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Май 17, 2008, 20:39 »

По поводу перекрытия: см. setWindowModality

По поводу расположения немного неясно. Где нужно расположить созданное окно?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
uriel
Гость
« Ответ #2 : Май 17, 2008, 21:04 »

Модальность - это немного не то. Улыбающийся Главное окно не блокирует дочернее, а всегда рисуется поверх него. Даже с установленной модальностью для дочернего.
А про расположение навеяно опять же QWizard.
Простой код:
Код:
QWizard *wzd = new QWizard;
QPushButton *pb = new QPushButton;
wzd->show();
pb->show();
Итог: кнопка расположена в левом-верхнем углу экрана, а мастер - по центру.
Ради интереса, кстати, можно попробовать поперемещать окно кнопки по области мастера. Вопрос прояснится. Подмигивающий
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Май 18, 2008, 02:03 »

С перекрытием проблему можно решить например так:

Код:
QWizard *wzd = new QWizard;
QPushButton *pb = new QPushButton;
pb->setWindowFlags(Qt::WindowStaysOnTopHint);
wzd->show();
pb->show();

Позицию нового окна (в данном случае это QPushButton) можно изменить так:

Код:
pb->move(<your_position>);


ЗЫ: а что это за флаг такой AlwaysStayOnTop? в ассистанте я ненашел такого
« Последнее редактирование: Май 18, 2008, 02:05 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
uriel
Гость
« Ответ #4 : Май 18, 2008, 15:11 »

Имя флага набирал руками и малость перепутал, извиняюсь. Улыбающийся
А у Вас-то приведённый выше код работает нормально? У меня окно мастера всё равно перекрывает кнопку.
Ах да, Qt 4.4.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Май 18, 2008, 15:46 »

Имя флага набирал руками и малость перепутал, извиняюсь. Улыбающийся
А у Вас-то приведённый выше код работает нормально? У меня окно мастера всё равно перекрывает кнопку.
Ах да, Qt 4.4.

Да, работает нормально Qt 4.3.4. На Qt 4.4.0 не проверял. Проверю отпишусь.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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