Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtshnik от Декабрь 03, 2010, 11:06



Название: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: qtshnik от Декабрь 03, 2010, 11:06
Добавляю в QMdiArea виджеты, при этом хочу, чтобы они не были стандартного типа (с флагом Qt::Window или Qt::SubWindow). Хотелось бы, чтобы они выглядели
как окно без заголовка, ну или хотя бы как окно с уменьшенным заголовком (как при использовании флага Qt::Tool). Проблема в том, что не получается применить ни флаг Qt::CustomizeWindowHint, ни флаг Qt::Tool. Я пробовал и в конструктор виджета их передавать, и в функцию setWindowFlags, а общий вид окна все равно не меняется. Такое впечатление, что при создании виджета в рамках QMdiArea в него жестко вшивается флаг Qt::SubWindow, и его нельзя поменять. Хотя в Assistant в описании класса QMdiArea написано
Цитировать
Unlike the window managers for top-level windows, all window flags (Qt::WindowFlags) are supported by QMdiArea as long as the flags are supported by the current widget style

В чем дело, как все-таки изменить внешний вид окон?


Название: Re: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: GreatSnake от Декабрь 03, 2010, 11:10
Цитировать
В чем дело, как все-таки изменить внешний вид окон?
Никак. Qt MDI создан не для этого.


Название: Re: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: qtshnik от Декабрь 06, 2010, 11:37
Решение вот.
Код:
    child = new MyWidget( ... );

    QMdiSubWindow *w = mdiArea.addSubWindow( child );
    w->setWindowFlags( Qt::SubWindow | Qt::FramelessWindowHint );

Работает флаг Qt::FramelessWindowHint, хотя про него в документации сказано
Цитировать
There are also a number of flags which you can use to customize the appearance of top-level windows. These have no effect on other windows
а окно QMdiSubWindow, по логике вещей, не должно являться  "top-level window"


Название: Re: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: GreatSnake от Декабрь 06, 2010, 13:07
Просто интересно,  а для чего такие окна могут вообще понадобиться?


Название: Re: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: qtshnik от Декабрь 06, 2010, 14:57
есть мысля загнать в заголовок каждого подокна панель инструментов с кнопками, а может и еше чего. Насколько смог понять, единственный способ это сделать - создать свою строку заголовка


Название: Re: WindowFlags для виджетов, содержащихся в QMdiArea
Отправлено: GreatSnake от Декабрь 06, 2010, 15:51
Тогда придётся самому заморачиваться с move/resize...