Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: bynet от Ноябрь 02, 2010, 12:26



Название: Создание и добавление окон в QMdiArea
Отправлено: bynet от Ноябрь 02, 2010, 12:26
оздаю главное окно QMainWindow. Затем устанавливаю центральный виджет QMdiArea. Есть другой класс ClientWindow: QMainWindow.
Добавляю ClientWindow в Mdiarea. Разварачиваю clientwindow максимально. У clientwindow есть кнопка по нажатии которой поверх этого окна должно дабавится Qwidget. Все работает. Но Qwidget тоже разварачивает максимально. Если сварачиваю то сварачиваются 2.

Как сделать чтобы qwidget был размером 200 на 200(некакие ресайзыне не помагают), а clientwindow был развернут максимально?

Код:
Код:
#include <QtGui>
#include "mainwindow.h"

MainWindow::MainWindow()
{

    createActions();
    createMenus();
    mdiArea = new QMdiArea();
  //  mdiArea->setViewMode(QMdiArea::TabbedView);
    setCentralWidget(mdiArea);
    setWindowTitle(trUtf8("аорпм"));
    showMaximized();

}


MainWindow::~MainWindow()
{

}


void MainWindow::createActions()
{
    spClient = new QAction(trUtf8("Клиенты"),this);
    connect(spClient,SIGNAL(triggered()),this,SLOT(spClientShow()));

}

void MainWindow::createMenus()
{
    spMenu = menuBar()->addMenu(trUtf8("Справочники"));
    spMenu->addAction(spClient);

}

void MainWindow::spClientShow()
{
    clWindow = new ClientWindow;
    mdiArea->addSubWindow(clWindow);
    connect(clWindow->getAddAction(),SIGNAL(triggered()),this,SLOT(spShShow()));
    clWindow->setWindowTitle(trUtf8("Клиенты"));
    clWindow->showMaximized();

}

void MainWindow::spShShow()
{
    QWidget *wgt = new QWidget();
    mdiArea->addSubWindow(wgt);
    wgt->show();
}

Рисунок:


Название: Re: Создание и добавление окон в QMdiArea
Отправлено: navrocky от Ноябрь 02, 2010, 15:30
Хм, присоединяюсь к вопросу. Внезапно я осознал что и мне надо именно так  :D

Есть большое подозрение, что без страшных костылей здесь не обойтись (


Название: Re: Создание и добавление окон в QMdiArea
Отправлено: Странник от Январь 28, 2011, 15:03
возможно уже неактуально, но на всякий случай = )
есть такая запрятанная фича, как QMdiArea::setOption ( QMdiArea::DontMaximizeSubWindowOnActivation, true )


Название: Re: Создание и добавление окон в QMdiArea
Отправлено: lit-uriy от Январь 28, 2011, 22:53
надо не виджет показывать поверх субокна, а ещё одно субокно, либо модальный диалог, и размеры задавать не главному виджету субокна, а самому субокну


Название: Re: Создание и добавление окон в QMdiArea
Отправлено: Странник от Февраль 01, 2011, 11:23
надо не виджет показывать поверх субокна, а ещё одно субокно, либо модальный диалог, и размеры задавать не главному виджету субокна, а самому субокну
если создавать субокно, необходимо использовать QMdiArea::setOption ( QMdiArea::DontMaximizeSubWindowOnActivation, true ) как я писал выше. при наличии развернутого mdi-окна без опции QMdiArea::DontMaximizeSubWindowOnActivation все остальные mdi-окна так же будут разворачиваться при активации.