如何在QT中将ScrollArea放入网格?

时间:2011-06-17 07:21:51

标签: qt

如何在QT中将ScrollArea调整到网格中?

我想将QScrollArea应用于网格的这一部分,其中包含名字,姓氏......

2 个答案:

答案 0 :(得分:1)

以下是样本。 QSridLayout内部更改了QScrollArea的大小。

头文件

#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 ");
}

答案 1 :(得分:1)

QScrollArea是一个普通的小部件,其大小由包含它的布局控制。您可以通过调用resize方法来更改大小。

但是,如果您需要调整QScrollArea中包含的对象的大小,则应使用QScrollArea::widgetResizable属性。查看Image Viewer示例,了解QLabel如何与QScrollArea一起调整大小。