一個QWidget
可以有一個佈局,並含有其它構件。所以你可以子類QWidget
,添加你需要的任何東西(以及一個佈局),並在任何你想要的地方使用。甚至更好(我想,根據您的需求)是直接繼承QScrollArea
,添加你所需要的,包括佈局,那麼您可以在批發砸:
class MyWidget : public QScrollArea
{
Q_OBJECT
public:
MyWidget(const QString& filename, QWidget* parent = 0);
};
MyWidget::MyWidget(const QString& filename, QWidget* parent) : QScrollArea(parent)
{
setWidgetResizable(true);
QWidget* central = new QWidget(this);
setWidget(central);
QVBoxLayout* layout = new QVBoxLayout(central);
central->setLayout(layout);
layout->addWidget(new QLabel(filename, central));
layout->addWidget(new QLineEdit("editor 1", central));
layout->addWidget(new QLineEdit("editor 2", central));
layout->addWidget(new QLineEdit("editor 3", central));
layout->addWidget(new QLineEdit("editor 4", central));
layout->addWidget(new QLineEdit("editor 5", central));
layout->addStretch();
}
然後使用它:
MyWidget* widget1 = new MyWidget("/file1", parent);
MyWidget* widget2 = new MyWidget("/file2", parent);
layout->addWidget(widget1);
layout->addWidget(widget2);
謝謝!不完全是我想要做的,但我改編了這個。我做了一個擴展QScrollBar的FilePanel類,然後我動態地向它添加FileItems。 FileItems在其中包含Widgets的佈局,因此我將該佈局添加到(中央)所擁有的佈局中。現在唯一的問題是,當它在已經初始化之後添加一個時,它不繪製任何東西。 – graw
好吧,我現在正在工作,謝謝!是的,它很有趣,您可以在佈局中的小部件中的摺疊佈局中的佈局中嵌套小部件等。:) – graw