Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QMDI проблема с начальным размером виджета
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
Litkevich Yuriy
Переделал пример MDI, под свои нужды, в качестве дочернего окна используется наследник QWidget.
Всю голову себе сломал, как заставить дочернее окна принять нужный размер. Например классическая установка:
child->resize(150, 150);
child->show();
не меняет ни чего, дочернее окна всегда создаётся с минимально возможным (определяемым содержимым) размером.

Проверял на Qt 4.4.3 и Qt 4.6.0 (MinGW)
DEADHUNT
QMdiSubWindow::resize не пробовал?
Litkevich Yuriy
Цитата(DEADHUNT @ 24.2.2010, 17:44) *
QMdiSubWindow::resize не пробовал?
неа, не пробовал, сейчас попробую

Хм, у этого класса нет такого метода (не переопределён из QWidget)

Да и потом, я располагаю указателем на окно (QWidget), и искать его через mdiArea->subWindowList() и т.д. по моему, не самый удачный вариант.
DEADHUNT
а как же у тебя окна добавляются? надо создать QMdiSubWindow, потом установить widget через setWidget. можно виджет создать над этим QMdiSubWindow и получать к нему доступ через QWidget::parent().
Litkevich Yuriy
Цитата(DEADHUNT @ 24.2.2010, 19:05) *
а как же у тебя окна добавляются? надо создать QMdiSubWindow, потом установить widget через setWidget.
Это не у меня это у тролей. Смотри функцию void MainWindow::open() в примере %QTDIR%\examples\mainwindows\mdi\mainwindow.cpp

Там в функции MdiChild *MainWindow::createMdiChild() так добавляется в MDI-область:
    MdiChild *child = new MdiChild;
    mdiArea->addSubWindow(child);
Litkevich Yuriy
Нашёл такой выход из положения:
в функции MdiChild *MainWindow::createMdiChild() для QMdiSubWindow делаю ресайз:
    MdiChild *child = new MdiChild;
    mdiArea->addSubWindow(child)->resize(350, 300);
Всё таки странно это всё как-то работает. У меня у виджета и sizeHint был переопределён и minmumSizeHint, никак не помогает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.