Название: Не работает layout в DockWidget-е Отправлено: SpiritFire от Декабрь 10, 2009, 12:05 Подскажиет, пожалуйста, как правильно создавать лейауты и засовывать в них виджеты?
Создаю свой виджет, в конструкторе сразу задаю пять кнопок в вертикальном лейауте: Код: PluginListWidget::PluginListWidget(QWidget* parent) Запускаю, получаю следующую картину, 5 кнопок одна на одной, все с координатами (0,0), на изменение размера виджета лейаут не реагирует. Открываю справку, смотрю пример, делаю так же у себя: Код: PluginListWidget::PluginListWidget(QWidget* parent) Получаю следующую картину: пустой виджет, никаких кнопок. Qt 4.5.3. Пример "Basic Layouts Example" работает, как и следовало ожидать вполне нормально. Но опять же скопипастеный оттуда код, принципиально не отличающийся от приведенного выше дает все тот же результат: пустое окно. Да, при выполнении этого кода в отладочный вывод выводится такое предупреждение: Цитировать Запускается D:\Qt_projects\pluginTest\bin\test.exe... QWidget::setLayout: Attempting to set QLayout "" on QDockWidget "", which already has a layout Уточнение: Более никаких методов класса PluginListWidget не переопределено. Из окна-родителя (которым является QMainWidget) также никаких методов касающихся данного виджета не вызывается. Название: Re: Не работает layout Отправлено: BRE от Декабрь 10, 2009, 12:10 Потому что ты это делаешь на QDockWidget'е. Посмотри документацию по этому классу.
Нужно создать свой виджет, положить на него 5 кнопок + layout и его положить на QDockWidget: void QDockWidget::setWidget ( QWidget * widget ) Название: Re: Не работает layout Отправлено: SpiritFire от Декабрь 10, 2009, 12:29 Спасибо за очень оперативный ответ, действительно, проблема в том, что не туда смотрел в документации. Прочел. Изучил пример "Dock Widgets Example".
В результате вышел вот такой код: Код: PluginListWidget::PluginListWidget(QWidget* parent) Который снова ничего не выводит на экран. Удаление-добавление парентов в конструкторах дочернего виджета, лейаута и кнопок не дают никакого эффекта... Что-то снова не так. Вызов newWidget->setLayout(m_layout); В конце конструктора тоже ничего не дает. Никаких предупреждений ни во время выполнения в отладочный ваывод, ни во время компиляции не выводится. Название: Re: Не работает layout в DockWidget-е Отправлено: BRE от Декабрь 10, 2009, 12:46 Возьми designer, добавь QDockWidget, на него свои кнопки, установи layout и посмотри, что он генерирует. Руками подчистить и использовать. Самое простое решение, на мой взгляд. :)
Название: Re: Не работает layout в DockWidget-е Отправлено: SpiritFire от Декабрь 10, 2009, 12:57 странно, я создавал виджет как QDockWidget в дизайнере, далее "Promoute to..." и свой класс. Ничего не отображалось.
Попробовал добавлять динамически в конструкторе главного окна - и все отлично заработало с таким кодом, как указано в моем предыдущем посте, с тем лишь отличиями, что пришлось руками вызвать mainWindow->addDockWidget(...); Название: Re: Не работает layout в DockWidget-е Отправлено: Авварон от Декабрь 10, 2009, 18:34 если я правильно помню, надо сначала добавить виджеты в лайаут, а потом уже назначать лайаут виджету
Название: Re: Не работает layout в DockWidget-е Отправлено: Dendy от Декабрь 11, 2009, 04:48 Я бы писал так:
Код: PluginListWidget::PluginListWidget(QWidget* parent) |