Qt 创建DockWidget停靠窗体

本文展示了一个使用Qt实现的停靠窗口示例程序。该程序创建了一个带有多个可停靠窗口的主窗口,演示了如何设置不同特性的停靠窗口,并将其放置在主窗口的右侧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:

#include "dockmainwindow.h"
#include <QTextCodec>
#include <QTextEdit>
#include <QDockWidget>


#pragma execution_character_set("utf-8")
DockMainWindow::DockMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    setWindowTitle(tr("停靠窗口例子"));
    QTextEdit  *te=new QTextEdit(this);
    te->setText(tr("左边主窗口"));
    te->setAlignment(Qt::AlignCenter);
    setCentralWidget(te);
    //右窗口1
    QDockWidget *dock=new QDockWidget(tr("dockwindow1"),this);
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);

    QTextEdit  *te1=new QTextEdit(this);
    te1->setText(tr("Window1"));
    dock->setWidget(te1);
    addDockWidget(Qt::RightDockWidgetArea,dock);

    //右窗口2
    QDockWidget *dock2=new QDockWidget(tr("dockwindow2"),this);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);

    QTextEdit  *te2=new QTextEdit(this);
    te2->setText(tr("Window2"));
    dock2->setWidget(te2);
    addDockWidget(Qt::RightDockWidgetArea,dock2);

    //右窗口3
    QDockWidget *dock3=new QDockWidget(tr("dockwindow3"),this);
    dock3->setFeatures(QDockWidget::AllDockWidgetFeatures);

    QTextEdit  *te3=new QTextEdit(this);
    te3->setText(tr("Window3"));
    dock3->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock3);

}

DockMainWindow::~DockMainWindow()
{

}

运行后得到的界面:





### 如何在Qt Designer中使用DockWidget #### DockWidget简介 `QDockWidget` 是一种可以停靠到主窗口上的部件,通常用于创建可移动、可隐藏的工具栏或面板。通过 `QDockWidget` 可以让用户自定义界面布局。 #### 创建并配置DockWidget 以下是关于如何在Qt Designer中使用 `QDockWidget` 的详细说明: 1. **打开Qt Designer** 打开Qt Designer后,新建一个项目或者加载现有的 `.ui` 文件。 2. **拖拽QDockWidget至主窗体** 在左侧的控件列表中找到 `QDockWidget` 控件,并将其拖放到主窗口上[^2]。 3. **调整位置和大小** 使用鼠标调整 `QDockWidget` 的初始位置和大小。可以通过右键菜单选择不同的停靠区域(如左、右、顶、底)来改变其默认显示的位置。 4. **设置标题和其他属性** 在右侧的属性编辑器中,修改 `QDockWidget` 的标题文字 (`windowTitle`) 和其他相关属性,比如浮动状态 (`floating`) 或者允许关闭按钮 (`allowedAreas`) 等。 5. **向DockWidget添加子控件** 将所需的控件(例如 `QPushButton`, `QTextEdit` 等)拖入到 `QDockWidget` 中作为其内容部分。 6. **保存UI文件** 完成设计之后,记得保存 `.ui` 文件以便后续转换为 Python 代码。 7. **生成Python代码并与程序集成** 利用 `pyuic5` 工具将 `.ui` 文件转化为对应的 Python 脚本。接着,在主要的应用逻辑里实例化该类对象并将它加入到主窗口当中去: ```python from PyQt5 import QtWidgets, uic class MyWindow(QtWidgets.QMainWindow): def __init__(self): super(MyWindow, self).__init__() uic.loadUi('your_ui_file.ui', self) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_()) ``` 8. **进一步定制行为** 如果希望更精细地控制 `QDockWidget` 的表现形式,则可以在 Python 程序内部对其进行额外设定。例如更改允许嵌套停靠或是启用动画过渡效果等特性[^4]: ```python def initUI(self): # 初始化各种界面组件... # 配置码头选项 self.setDockOptions( QtWidgets.QMainWindow.AllowTabbedDocks | QtWidgets.QMainWindow.ForceTabbedDocks | QtWidgets.QMainWindow.VerticalTabs ) ``` 以上就是有关于怎样借助 Qt Designer 来操作 `QDockWidget` 的基本流程介绍[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值