[решено] QScrollArea не растягивает виждет внутри себя. А хочется.
Если я просто засуну внутрь MainWindow слой QVBoxLayout в котором будет 30 кнопок - каждая кнопка растянется по ширине MainWindow и это круто! http://i.imgur.com/W5vxdUR.png
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
QVBoxLayout *mainLayout = new QVBoxLayout();
for (int i = 0; i < 30; i++) {
QPushButton *but = new QPushButton();
but->setText("asdas");
mainLayout->addWidget(but);
}
this->setLayout(mainLayout);
}
Но кнопок очень много, еще могут быть там таблицы и куча других виджетов. Я хочу добавить вертикальный скролл и при этом сохранить растяжение по горизонтали.
На помощь не приходит QScrollArea. То есть приходит, но плохо.
// Наследуюсь от QScrollArea
COutlookContainer::COutlookContainer(QWidget *parent) :
QScrollArea(parent)
{
QVBoxLayout *scrollLayout = new QVBoxLayout();
for (int i = 0; i < 30; i++) {
QPushButton *but = new QPushButton();
but->setText("asdas");
scrollLayout->addWidget(but);
}
QWidget *contianerWidget = new QWidget(); //временный виджет, потому что QScrollArea не принимает QLayout
contianerWidget->setObjectName("contianerWidgetId");
contianerWidget->setLayout(scrollLayout);
this->setWidget(contianerWidget);
this->setAlignment(Qt::AlignCenter);
}
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
COutlookContainer *container = new COutlookContainer();
QHBoxLayout *mainLayout = new QHBoxLayout();
mainLayout->addWidget(container);
this->setLayout(mainLayout);
}
Cкролл появляется, но кнопки сжимаются до минимума... http://i.imgur.com/g2JB1tM.png
/* подсветочка */
COutlookContainer {
background-color: white;
border: 1px solid black;
}
COutlookContainer QWidget#contianerWidgetId {
background-color: green;
border: 1px solid red;
}
Отчасти помогает contianerWidget->setMinimumWidth(480);
но я никогда заранее не знаю ширину.
В общем, мужики, где я неправ?