QT 5 初学2 视窗设计(续)

本文介绍了如何使用QDockWidget类实现桌面应用中窗口的自由伸缩和适应主窗口变化的功能。通过实例展示了创建不同类型的DockWidget,并将其添加到主窗口的不同区域的方法。

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

之前用了窗口切分,但发现一个问题,窗口变大或者变小,切分的窗口并不立即发生变化。
增加了一条语句:setCentralWidget(spliter); 之后,切分的窗口就没问题了。
看到QDockWigdet这个类后,发现使用这个类,窗口可自由伸缩,适应主窗口的变化。编写代码也不麻烦。

#include <QDockWidget>
#include <QTextEdit>
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle(tr("Dock Windows"));
    QTextEdit *edt = new QTextEdit(tr("Main Window"),this);
    setCentralWidget(edt); //把edt设置为中心控件

    QDockWidget *dockWidget2 = new QDockWidget(tr("LEFT Window 2"),this);
    dockWidget2->setFeatures(QDockWidget::DockWidgetFloatable |  QDockWidget::DockWidgetClosable);
    dockWidget2->setMaximumWidth(150);  //防止左边工具栏被拉得不像样子
    QTextEdit *edt2 = new QTextEdit(tr("LEFT Window string"));
    dockWidget2->setWidget(edt2);
    addDockWidget(Qt::LeftDockWidgetArea,dockWidget2);


    QDockWidget *dockWidget3 = new QDockWidget(tr("BOTTOM Window "),this);
    dockWidget3->setFeatures(QDockWidget::AllDockWidgetFeatures);
    dockWidget3->setMaximumHeight(200); //状态栏,一定大小就足够了。以后 再根据分辨率调整。
    QTextEdit *edt3 = new QTextEdit(tr("bottom Window "));
    dockWidget3->setWidget(edt3); 
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget3);

}    
 运行结果:

这里写图片描述
这里, 有几个函数setCenterWidget , addDockWidget 都是QWidget 带的,这里被this调用。这意味着在一个Widget里,就可以建立这样的停靠规则:中心区域,上下左右区域。
这里写图片描述
桌面应用采用这样的布局方式,至少从模仿角度看还算可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值