QMainWindow, QMainWindow::setMainWidget(QWidget*) |
Здравствуйте, гость ( Вход | Регистрация )
QMainWindow, QMainWindow::setMainWidget(QWidget*) |
wdefik |
3.4.2010, 1:12
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 4.3.2010 Пользователь №: 1505 Спасибо сказали: 0 раз(а) Репутация: 0 |
Возможно ли после того, как в QMainWindow методом setMainWidget(QWidget*) уже установлен главный виджет, назначить ему в качестве главного виджета другой, а в общем случае просто жонглировать виджетами, причем так, чтобы все было корректно?
или, может быть, есть альтернативные подходы? |
|
|
kwisp |
3.4.2010, 8:54
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
wdefik,
что за метод такой setMainWidget(QWidget*) ? не нашёл такого в документации по qt 4.6 ты имел ввиду setCentralWidget ( QWidget * ) или setMenuWidget ( QWidget * ) ? однако в обоих случаях, главное окно становится хозяином/владельцем устанавливаемых виджетов и удаляет их(освобождает память по указателю) в соответствующее время - обычно при собственном освобождении памяти. можно попробовать уставливать виджет, а когда нужно установить другой менять ему хозяина/владельца к примеру на 0 и затем в ручную освобождать память, затем устанавливать другой. написать тест и узнать можно так или нет. пока других способов мне не видно. |
|
|
wdefik |
3.4.2010, 13:25
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 4.3.2010 Пользователь №: 1505 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, setCentralWidget(QWidget*) - прошу прощения, ночь, утсалость..
Да, кажется, такой вариант приемлем. спасибо |
|
|
kwisp |
3.4.2010, 14:38
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
wdefik,
ты пробовал или наугад сказал что вариант приемлем? |
|
|
igor_bogomolov |
3.4.2010, 15:45
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
wdefik, может в качестве центрального виджета установить QStackedWidget
|
|
|
kwisp |
3.4.2010, 15:54
Сообщение
#6
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
wdefik |
3.4.2010, 16:32
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 4.3.2010 Пользователь №: 1505 Спасибо сказали: 0 раз(а) Репутация: 0 |
wdefik, ты пробовал или наугад сказал что вариант приемлем? Для простейшего приложения ничего страшного не происходит. Мой проект немного разросся, так что я пока не могу сказать как это работает для более сложных вариантов. wdefik, может в качестве центрального виджета установить QStackedWidget Дело в том, что в качестве виджета, который будет являться центральным, будут использоваться несколько OpenGl-ных сцен (классы наследуются от QGLWidget), которые могут со временем оказаться тяжеловесными, но переключение между ними будет происходить не слишком часто, так что по идее нет смысла все время хранить эти объекты. То есть в моем случае выгоднее затратить некоторое время на создание сцены, чем хранить его все время. Означает ли это, что я смогу в QStackedWidget держать указатели на нужные виды сцен и динамически создавать\разрушать их при этом выбирая новую для отображения? |
|
|
Текстовая версия | Сейчас: 4.12.2024, 15:26 |