c++ - 如何管理 QDockWidget 上的布局?
问题描述
我正在开始使用 Qt,并且我的学校有一个项目。我想制作一个界面来读取空间数据库并显示它们。到目前为止,我可以在列表中显示表格,而我的实际目标是在双击时显示对象的详细信息。
为此,我尝试在双击对象时打开第二个停靠栏,并尝试在第二个停靠栏内进行布局以正确显示详细信息。
程序成功打开了一个新的dock,但是widget太小了,全部挤在dock的左上角:错误图片:
我试图不使用布局,而只使用带有 QDockWidget 的 setWidget,但它只显示最后一个小部件。
这是我的布局代码:
dock1 = new QDockWidget(tr("Caractéristiques de l'objet : "), this);
dock1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QVBoxLayout* layout = new QVBoxLayout();
Nom_Objets = new QLineEdit(dock1);
layout->addWidget(Nom_Objets);
//dock1->setWidget(Nom_Objets);
Categorie_Objets = new QLineEdit(dock1);
layout->addWidget(Categorie_Objets);
//dock1->setWidget(Categorie_Objets);
Description_Objets = new QTextEdit(dock1);
layout->addWidget(Description_Objets);
//dock1->setWidget(Description_Objets);
setLayout(layout);
addDockWidget(Qt::RightDockWidgetArea, dock1);
解决方案
如果要向 QDockWidget 添加多个小部件,则必须使用 QWidget 作为容器:
dock1 = new QDockWidget(tr("Caractéristiques de l'objet : "), this);
dock1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
addDockWidget(Qt::RightDockWidgetArea, dock1);
QWidget* container = new QWidget;
dock1->setWidget(container);
QVBoxLayout* layout = new QVBoxLayout(container);
Nom_Objets = new QLineEdit;
Categorie_Objets = new QLineEdit;
Description_Objets = new QTextEdit;
layout->addWidget(Nom_Objets);
layout->addWidget(Categorie_Objets);
layout->addWidget(Description_Objets);
推荐阅读
- ios - 在 URL 获取请求中使用西里尔字符
- sql - 解析包含名称空间的 XML
- vba - 公式太长且仅适用于一个单元格
- java - 为什么新的 Integer 充当值类型 int?
- javascript - PDF到离子3中的图像
- python - Python 日志行未持久化
- azure - 是否可以使用 ARM 模板配置对 Azure Active Directory 应用程序的 api 权限
- php - 代码创建两个 MySQL 行而不是一个
- typescript - this.nav.getActiveChildNav(...).select 不是函数
- android - 无法编译 play-services-places:15.0.1