crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QMDI проблема с начальным размером виджета
Litkevich Yuriy
  опции профиля:
сообщение 24.2.2010, 14:40
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Переделал пример MDI, под свои нужды, в качестве дочернего окна используется наследник QWidget.
Всю голову себе сломал, как заставить дочернее окна принять нужный размер. Например классическая установка:
child->resize(150, 150);
child->show();
не меняет ни чего, дочернее окна всегда создаётся с минимально возможным (определяемым содержимым) размером.

Проверял на Qt 4.4.3 и Qt 4.6.0 (MinGW)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 24.2.2010, 14:44
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


QMdiSubWindow::resize не пробовал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 24.2.2010, 15:08
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(DEADHUNT @ 24.2.2010, 17:44) *
QMdiSubWindow::resize не пробовал?
неа, не пробовал, сейчас попробую

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

Да и потом, я располагаю указателем на окно (QWidget), и искать его через mdiArea->subWindowList() и т.д. по моему, не самый удачный вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 24.2.2010, 16:05
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


а как же у тебя окна добавляются? надо создать QMdiSubWindow, потом установить widget через setWidget. можно виджет создать над этим QMdiSubWindow и получать к нему доступ через QWidget::parent().

Сообщение отредактировал DEADHUNT - 24.2.2010, 16:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 24.2.2010, 16:26
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(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
  опции профиля:
сообщение 24.2.2010, 16:57
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Нашёл такой выход из положения:
в функции MdiChild *MainWindow::createMdiChild() для QMdiSubWindow делаю ресайз:
    MdiChild *child = new MdiChild;
    mdiArea->addSubWindow(child)->resize(350, 300);
Всё таки странно это всё как-то работает. У меня у виджета и sizeHint был переопределён и minmumSizeHint, никак не помогает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.4.2020, 4:23