Добавляю в QMdiArea виджеты, при этом хочу, чтобы они не были стандартного типа (с флагом Qt::Window или Qt::SubWindow). Хотелось бы, чтобы они выглядели
как окно без заголовка, ну или хотя бы как окно с уменьшенным заголовком (как при использовании флага Qt::Tool). Проблема в том, что не получается применить ни флаг Qt::CustomizeWindowHint, ни флаг Qt::Tool. Я пробовал и в конструктор виджета их передавать, и в функцию setWindowFlags, а общий вид окна все равно не меняется. Такое впечатление, что при создании виджета в рамках QMdiArea в него жестко вшивается флаг Qt::SubWindow, и его нельзя поменять. Хотя в Assistant в описании класса QMdiArea написано
А ты для кого этот флаг устанавливаешь, для своего виджета или для его QMdiSubWindow?
Покажи пример кода где меняются флаги для QMdiSubwindow
Я несколько вариантов пробовал
Пробовал добавлять QMdiSubWidget и в него засовывать виджет:
QWidget * newWidget = new QWidget;
...
QMdiSubWindow *sw = new QMdiSubWindow;
sw->setWindowFlags(Qt::SubWindow | Qt::CustomizeWindowHint);
sw->setWidget(newWidget);
newWidget->setParent(sw);
pma->addSubWindow(sw);
QWidget * newWidget = new QWidget(pma);
...
newWidget->setWindowFlags(Qt::Tool | Qt::CustomizeWindowHint);
pma->addSubWindow(newWidget);
Попробуй так:
child = new MyWidget( ... );
QMdiSubWindow *w = mdiArea.addSubWindow( child );
w->setWindowFlags( Qt::SubWindow | Qt::FramelessWindowHint );
child = new MyWidget( ... );
QMdiSubWindow *w = mdiArea.addSubWindow( child );
w->setWindowFlags( Qt::SubWindow | Qt::FramelessWindowHint );
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)