Подскажиет, пожалуйста, как правильно создавать лейауты и засовывать в них виджеты?
Создаю свой виджет, в конструкторе сразу задаю пять кнопок в вертикальном лейауте:
PluginListWidget::PluginListWidget(QWidget* parent)
: QDockWidget(parent)
, m_layout (NULL)
{
QPushButton *button1 = new QPushButton("One", this);
QPushButton *button2 = new QPushButton("Two", this);
QPushButton *button3 = new QPushButton("Three", this);
QPushButton *button4 = new QPushButton("Four", this);
QPushButton *button5 = new QPushButton("Five", this);
m_layout = new QVBoxLayout(this);
m_layout->addWidget(button1);
m_layout->addWidget(button2);
m_layout->addWidget(button3);
m_layout->addWidget(button4);
m_layout->addWidget(button5);
this->setLayout(m_layout);
}
Запускаю, получаю следующую картину, 5 кнопок одна на одной, все с координатами (0,0), на изменение размера виджета лейаут не реагирует.
Открываю справку, смотрю пример, делаю так же у себя:
PluginListWidget::PluginListWidget(QWidget* parent)
: QDockWidget(parent)
, m_layout (NULL)
{
QPushButton *button1 = new QPushButton("One");
QPushButton *button2 = new QPushButton("Two");
QPushButton *button3 = new QPushButton("Three");
QPushButton *button4 = new QPushButton("Four");
QPushButton *button5 = new QPushButton("Five");
m_layout = new QVBoxLayout();
m_layout->addWidget(button1);
m_layout->addWidget(button2);
m_layout->addWidget(button3);
m_layout->addWidget(button4);
m_layout->addWidget(button5);
setLayout(m_layout);
}
Получаю следующую картину: пустой виджет, никаких кнопок.
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) также никаких методов касающихся данного виджета не вызывается.