Вот образец.Размер QScrollArea изменяется внутри QGridLayout.
заголовочный файл
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QScrollArea>
#include <QTextEdit>
#include <QPushButton>
#include <QGridLayout>
class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QScrollArea *sca;
QTextEdit *txt;
QPushButton *btn;
private slots:
void onClicked();
};
#endif // WIDGET_H
исходный файл
#include "widget.h"
#include <QScrollBar>
Mediator::Widget(QWidget *parent)
: QWidget(parent)
{
sca = new QScrollArea(this);
txt = new QTextEdit;
txt->setFixedSize(1000,500);
btn = new QPushButton("Button",this);
btn->setFixedSize(75,30);
QGridLayout *layout = new QGridLayout;
layout->addWidget(sca);
layout->addWidget(btn);
sca->setWidget(txt);
setLayout(layout);
connect(btn,SIGNAL(clicked()),this,SLOT(onClicked()));
}
Widget::~Widget()
{
}
void Widget::onClicked()
{
txt->setText(txt->toPlainText() + "abcd ");
}