менеджер размещения, внедрение менеджера размещения в конструктор |
Здравствуйте, гость ( Вход | Регистрация )
менеджер размещения, внедрение менеджера размещения в конструктор |
anater |
25.12.2009, 17:26
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.12.2009 Пользователь №: 1335 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день.
Проблема в следующем: При создании менеджера размещения в конструкторе менеджер не отрабатывает. Выдается в отладке такая штука. QWidget::setLayout: Attempting to set QLayout "" on qarm "", which already has a layout Уж что только не делал не работает и все тут. Рекомендации прочитать мануал и погуглить не нужны. Имеется код main
хейдер
код класса
|
|
|
BRE |
25.12.2009, 17:36
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Потому что у QMainWindow есть свой Layout, который ему нужен и переустанавливать его своим не стоит.
Сделай свой виджет, в котором будет все твои виджеты, настрой в нем свой layout и установи этот виджет методом void QMainWindow::setCentralWidget ( QWidget * widget ). |
|
|
anater |
25.12.2009, 17:41
Сообщение
#3
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.12.2009 Пользователь №: 1335 Спасибо сказали: 0 раз(а) Репутация: 0 |
Потому что у QMainWindow есть свой Layout, который ему нужен и переустанавливать его своим не стоит. Сделай свой виджет, в котором будет все твои виджеты, настрой в нем свой layout и установи этот виджет методом void QMainWindow::setCentralWidget ( QWidget * widget ). Спасибо! А как на примере выше изложенного кода это будет выглядеть? |
|
|
Litkevich Yuriy |
25.12.2009, 17:54
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
anater, при работе с QMainWindow, ты всегда создаёшь виджет, который затем помещаешь в главное окно.
Т.е. тебе лучше создать отдельный класс со своими виджетами, например, MainWidget, а затем в конструкторе главного окна: где w - указатель на MainWidget, член-класса главного окнаЛибо, вместо строчки (непосредственно про твой код): this->setLayout(layout); написать:
|
|
|
anater |
28.12.2009, 11:51
Сообщение
#5
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.12.2009 Пользователь №: 1335 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем спасибо!
По итогу сделал как:
|
|
|
Текстовая версия | Сейчас: 26.12.2024, 16:53 |