LINUX.ORG.RU

[решено] QScrollArea не растягивает виждет внутри себя. А хочется.

 


0

1

Если я просто засуну внутрь 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); но я никогда заранее не знаю ширину.

В общем, мужики, где я неправ?



Последнее исправление: JANB (всего исправлений: 2)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.