Russian Qt Forum
Июля 04, 2025, 22:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Z-order (top-level widows)  (Прочитано 4617 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Января 05, 2014, 12:25 »

Добрый день

Есть top-level окна напр 1, 2, 3 с одинаковыми атрибутами. 2 перекрывает 3, а 1 перекрывает 2 (1 сейчас в фокусе). Как мне добиться расклада 1, 3, 2 ?

Спасибо
Записан
Bepec
Гость
« Ответ #1 : Января 05, 2014, 12:58 »

Модальность окон не предлагать? Что 1 <- 3 <-2  модальны друг к другу?

Ну или как вариант вызвать их по очереди через show. Если флаги одинаковы, то они и расположатся в порядке вызова.

Ещё вопрос - их положение должно быть абсолютным? Т.е. если щелкнуть на нижнее, оно должно стать верхним, или нет?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Января 05, 2014, 13:26 »

Как мне добиться расклада 1, 3, 2 ?
Вытащить вперед 3 окно;
Вытащить вперед 1 окно.

Топовыми окнами занимаются оконные менеджеры, думаю для каждой платформы можно найти более удобные нативные средства.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Января 05, 2014, 13:58 »

show() не имеет эффекта если окно видимо. Сделать последним можно через QWidget::lower(), то есть (1, 2, 3) можно сделать (1, 3, 2) вызвав w2->lower(). Но это не спасает при болee длинной цепочке, напр (1, 2, 3, 4) -> (1, 3, 2, 4). Вызывать lower/raise последовательно не годится т.к. окно всплывает/прячется немедленно. А QWidget::stackUnder к сожалению не имеет эффекта для top-level.   

Топовыми окнами занимаются оконные менеджеры, думаю для каждой платформы можно найти более удобные нативные средства.
В карбоне помню SendBehind, на какаве не знаю, придется изучать, плюс лезть в вонючие кишки Вындоуз. И файлы порасписывать или загадить текст #if'ами. Дороговато обойдется совет знатока  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Января 05, 2014, 14:18 »

show() не имеет эффекта если окно видимо.
Для поднятия окна можно попробовать void QWidget::activateWindow().

Дороговато обойдется совет знатока  Улыбающийся
А кто в этом виноват?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Января 06, 2014, 14:12 »

Ладно, др вопросик (тоже Z-Order): как при нажатии Cmd+Tab (Ctl+Tab на Вындоуз) переключаться между top-level окнами?

Спасибо
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Января 06, 2014, 14:41 »

И еще на ZOrder (чтобы не скучно было)

Вот есть удобные ф-ции QApplication::activeWindow и avtiveModalWidget. А где такая же для окна с флагом Qt::Tool ?

Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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