Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Января 05, 2014, 12:25



Название: Z-order (top-level widows)
Отправлено: Igors от Января 05, 2014, 12:25
Добрый день

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

Спасибо


Название: Re: Z-order (top-level widows)
Отправлено: Bepec от Января 05, 2014, 12:58
Модальность окон не предлагать? Что 1 <- 3 <-2  модальны друг к другу?

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

Ещё вопрос - их положение должно быть абсолютным? Т.е. если щелкнуть на нижнее, оно должно стать верхним, или нет?


Название: Re: Z-order (top-level widows)
Отправлено: Old от Января 05, 2014, 13:26
Как мне добиться расклада 1, 3, 2 ?
Вытащить вперед 3 окно;
Вытащить вперед 1 окно.

Топовыми окнами занимаются оконные менеджеры, думаю для каждой платформы можно найти более удобные нативные средства.


Название: Re: Z-order (top-level widows)
Отправлено: Igors от Января 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'ами. Дороговато обойдется совет знатока  :)


Название: Re: Z-order (top-level widows)
Отправлено: Old от Января 05, 2014, 14:18
show() не имеет эффекта если окно видимо.
Для поднятия окна можно попробовать void QWidget::activateWindow().

Дороговато обойдется совет знатока  :)
А кто в этом виноват?


Название: Re: Z-order (top-level widows)
Отправлено: Igors от Января 06, 2014, 14:12
Ладно, др вопросик (тоже Z-Order): как при нажатии Cmd+Tab (Ctl+Tab на Вындоуз) переключаться между top-level окнами?

Спасибо


Название: Re: Z-order (top-level widows)
Отправлено: Igors от Января 06, 2014, 14:41
И еще на ZOrder (чтобы не скучно было)

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

Спасибо