A 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);