当前位置: 首页 > article >正文

布局管理, 分割窗口, 停靠窗口, 堆栈窗口, 综合应用

本章简单介绍布局管理的使用方法。首先通过三个实例分别介绍分割窗口 QSplitter 类、停靠窗口 QDockWidget 类及堆栈窗口 QStackedWidget 类的使用,然后通过一个实例介绍布局管理器的使用方法,最后通过一个修改用户资料综合实例介绍以上内容的综合应用。

名3.1 分割窗口QSplitter 类

分割窗口 QSplitter 类在应用程序中经常用到,它可以灵活分割窗口的布局,经常用在类似文件资源管理器的窗口设计中。

一个十分简单的分割窗口功能,整个窗口由三个子窗口组成,各个子窗口之间的大小可随意拖曳改变。

简单分割窗口实例效果如图3.1所示。

本实例采用编写代码的方式实现,具体步骤如下。

(1) 新建 Qt Widgets Application(详见1.3.1节),项目名称为"Splitter",基类选择"QMainWindow",取消“创建界面“复选框的选中状态。

(2) 在上述工程的 "main.cpp" 文件中添加如下代码:

int main(int argc, char *argv[]) 

{

    QApplication a(argc, argv);

    QFont font ("ZYSongl8030", 12);

    a.setFont(font);

    

    QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0);

    QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain);

    textLeft->setAlignment(Qt::AlignCenter);

    

    QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);

    splitterRight->setOpaqueResize(false);

    

    QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"), splitterRight);

    textUp->setAlignment(Qt::AlignCenter);

    QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"), splitterRight);

    textBottom->setAlignment(Qt::AlignCenter);

    

    splitterMain->setStretchFactor(1, 1);

    splitterMain->setWindowTitle(QObject::tr("Splitter"));

    splitterMain->show();

    

    return a.exec();

}

其中,

(a) QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0): 新建一个 QSplitter 类对象,作为主分割窗口,设定此分割窗口为水平分割窗口。

(b) QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain): 新建一个 QTextEdit 类对象,并将其插入主分割窗口中。

(c) textLeft->setAlignment(Qt::AlignCenter): 设定 QTextEdit 中文字的对齐方式。

(d) QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain): 新建一个 QSplitter 类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口。

(e) splitterRight->setOpaqueResize(false): 调用 setOpaqueResize(bool) 方法用于设定分割窗口的分割条在拖曳时是否为实时更新显示。

(f) splitterMain->setStretchFactor(1, 1): 调用 setStretchFactor() 方法用于设定可伸缩控件。


http://www.kler.cn/a/302920.html

相关文章:

  • 使用 Keras 训练一个卷积神经网络(CNN)(入门篇)
  • Postman上传图片如何处理
  • 应用于新能源汽车NCV4275CDT50RKG车规级LDO线性电压调节器芯片
  • 【数据结构与算法】第11课—数据结构之选择排序和交换排序
  • 随手记:简单实现纯前端文件导出(XLSX)
  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • 代码随想录算法训练营第14天|226. 翻转二叉树、101. 对称二叉树、104. 二叉树的最大深度、111. 二叉树的最小深度
  • 基于Java的建筑节能监测系统+公共建筑能耗监测系统
  • 【笔记】1.1 拉伸力-伸长(延伸)曲线和应力-应变曲线
  • QT使用相机拍照
  • 突破行业边界,构建可持续未来:2024生态系统架构创新与开放标准赋能全球业务增长
  • linux-L8.linux更改文件的拥有者
  • 解决idea git比对 contents have differences only in line separators
  • VLAN配置学习笔记
  • Redis 数据类型详解
  • 二叉排序树在实际生活应用中作用
  • 如何通过subprocess在数据采集中执行外部命令 —以微博为例
  • “勇者斗恶龙”即将上演,乐道L60剑指Model Y
  • EasyExcel 动态表头+表头合并
  • Vue2 和 Vue3 区别 — 源码深度解析
  • 用命令行的方式启动.netcore webapi
  • Linux从入门到开发实战(C/C++)Day10-线程
  • Git使用经验总结6-删除远端历史记录
  • ​zookeeper集群配置与启动
  • CentOs 入门必备基础知识详细讲解
  • 谈一谈幽默的力量