【发布时间】:2016-12-20 13:09:20
【问题描述】:
我正在尝试创建一个专门的QDockWidget,其中包含一些我可以在其他 Qt5 UI 中使用的内容。为此,我创建了一个带有 UI 表单的 QDockWidget 子类,名为 SpecialDockWidget。内容(QTreeWidget)添加到 UI 表单中。
在我的主 UI 中,我添加了 SpecialDockWidget 作为 QDockWidget 促销,提升了所需的停靠小部件,一切都可以编译。但是,当我运行应用程序时,我提升的停靠小部件在其标题栏中包含 SpecialDockWidget 的标题,但内容仍然为空。仅当停靠小部件成为主 UI 的一部分(无论是浮动的还是附加的)时才会发生这种情况,并且如果停靠小部件作为顶级小部件自行实例化,则停靠小部件会成功显示内容。
Qt 文档中关于QDockWidget::setWidget() 的内容如下:
如果添加小部件时停靠小部件可见,则必须明确
show()。注意,在调用这个函数之前必须添加widget的布局;否则,小部件将不可见。
我尝试在SpecialDockWidget 和内容上都调用show(),并自己设置了布局,但内容仍然不显示。
谁能告诉我我做错了什么?
编辑:一些照片显示了正在发生的事情:
Dock 小部件代码:
#include "specialdockwidget.h"
#include "ui_specialdockwidget.h"
#include <QVBoxLayout>
SpecialDockWidget::SpecialDockWidget(QWidget *parent) :
QDockWidget(parent),
ui(new Ui::SpecialDockWidget)
{
ui->setupUi(this);
}
SpecialDockWidget::~SpecialDockWidget()
{
delete ui;
}
主窗口代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// This produces the top-level dock widget
// SpecialDockWidget* w = new SpecialDockWidget();
// w->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
【问题讨论】:
-
发布一些代码来展示小部件及其内容是如何创建的
-
该站点现在不断覆盖我的编辑,因此:图片 1 - 停靠小部件 UI 表单。图 2 - 主窗口的最终结果。图 3 - 停靠小部件作为顶级小部件。