gra*_*raw 1 layout user-interface qt widget
简单的问题(我希望!).这是我的第一个Qt应用程序,我正在努力如何在我的Gui上拥有一组元素.
我需要为每个File对象提供大约8个标准QWidgets(标签,编辑,按钮),可以动态添加或删除它们.
所以最终我需要将所有File对象放在QSBoxLayout中的QScrollLay中.
但首先我需要以某种方式对它们进行分组.我意识到我可以在我的主窗口上用很多偏移来绘制它们,但它不会很优雅.
如何让我的File对象扩展某种画布,每一个都维护它自己的一组小部件?
谢谢你的指导.
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();
}
Run Code Online (Sandbox Code Playgroud)
然后使用它:
MyWidget* widget1 = new MyWidget("/file1", parent);
MyWidget* widget2 = new MyWidget("/file2", parent);
layout->addWidget(widget1);
layout->addWidget(widget2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4301 次 |
| 最近记录: |