版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Qt5开发及实例(第2版)-第3章Qt5布局管理第3章 Qt 5布局管理3.13.23.3分割窗口分割窗口QSplitter类类停靠窗口停靠窗口QDockWidget类类堆栈窗体堆栈窗体QStackedWidget类类3.43.5基本布局(基本布局(QLayout)【综合实例】:修改用户资料【综合实例】:修改用户资料Qt5开发及实例(第2版)-第3章Qt5布局管理3.1 分割窗口QSplitter类【例】【例】(简单) 一个十分简单的分割窗口功能,整个对话框由三个窗口组成,各个窗口之间的大小可随意拖曳改变,效果如图3.1所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.1 分割窗口QS
2、plitter类本实例采用编写代码的方式实现,具体步骤如下。(1)新建Qt Widgets Application(详见1.3.1节),项目名称为“Splitter”,基类选择“QMainWindow”,取消“创建界面”复选框的选中状态。(2)在上述工程的“main.cpp”文件中添加代码。(3)在“main.cpp”文件的开始部分加入以下头文件:#include#include#include (4)运行程序,显示效果如图3.1所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.2 停靠窗口QDockWidget类停靠窗口QDockWidget类也是应用程序中经常用到的,设置停靠窗口的
3、一般流程如下。(1)创建一个QDockWidget对象的停靠窗体。(2)设置此停靠窗体的属性,通常调用setFeatures()及setAllowedAreas()两种方法。(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit。(4)将控件插入停靠窗体,调用QDockWidget的setWidget()方法。(5)使用addDockWidget()方法在MainWindow中加入此停靠窗体。Qt5开发及实例(第2版)-第3章Qt5布局管理3.2 停靠窗口QDockWidget类【例】【例】(简单) 停靠窗口QDockWidget类的使用:窗口1只可在主窗口的左
4、边和右边停靠;窗口2只可在浮动和右部停靠两种状态间切换,并且不可移动;窗口3可实现停靠窗口的各种状态。效果如图3.2所示。实例文件见光盘CH302。Qt5开发及实例(第2版)-第3章Qt5布局管理3.2 停靠窗口QDockWidget类(1)新建Qt Widgets Application (详见1.3.1节),项目名称为“DockWindows”,基类选择“QMainWindow”,类名命名为“DockWindows”,取消“创建界面”复选框的选中状态,如图3.3所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.2 停靠窗口QDockWidget类(2)DockWindows类中只有
5、一个构造函数的声明。代码如下:class DockWindows : public QMainWindow Q_OBJECTpublic: DockWindows(QWidget *parent = 0); DockWindows(); (3)打开“dockwindows.cpp”文件,DockWindows类构造函数实现窗口的初始化及功能实现,具体代码。(4)在“dockwindows.cpp”文件的开始部分加入以下头文件: #include#include(5)运行程序,显示效果如图3.2所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.3 堆栈窗体堆栈窗体QStackedWidg
6、et类类【例】【例】(简单) 堆栈窗体QStackedWidget类的使用,当选择左侧列表框中不同的选项时,右侧显示所选的不同的窗体。在此使用列表框QListWidget,效果如图3.4所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.3 堆栈窗体堆栈窗体QStackedWidget类类(1)新建Qt Widgets Application(详见1.3.1节),项目名称为“StackedWidget”,基类选择“QDialog”,类名命名为“StackDlg”,取消“创建界面”复选框的选中状态,如图3.5所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.3 堆栈窗体堆栈窗体QS
7、tackedWidget类类(2)打开“stackdlg.h”文件,添加如下加黑代码: class StackDlg : public QDialogQ_OBJECTpublic:StackDlg(QWidget *parent = 0);StackDlg();private:QListWidget *list;QStackedWidget *stack;QLabel *label1;QLabel *label2;QLabel *label3; 在文件开始部分添加以下头文件: #include #include #include Qt5开发及实例(第2版)-第3章Qt5布局管理3.3 堆栈窗体
8、堆栈窗体QStackedWidget类类(3)打开“stackdlg.cpp”文件,在停靠窗体StackDlg类的构造函数中添加代码。(4)在stackdlg.cpp文件的开始部分加入以下头文件: #include (5)运行程序,显示效果如图3.4所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayout)Qt提供了QHBoxLayout类、QVBoxLayout类及QGridLayout类等的基本布局管理,分别是水平排列布局、垂直排列布局和网格排列布局。它们之间的继承关系如图3.6所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayo
9、ut)addWidget()方法用于加入需要布局的控件,方法原型如下: void addWidget(QWidget *widget, /需要插入的控件对象int fromRow, /插入的行int fromColumn, /插入的列int rowSpan, /表示占用的行数int columnSpan, /表示占用的列数Qt:Alignment alignment=0 /描述各个控件的对齐方式)Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayout)addLayout ()方法用于加入子布局,方法原型如下: void addLayout(QLayout *layou
10、t, /表示需要插入的子布局对象int row, /插入的起始行int column, /插入的起始列int rowSpan, /表示占用的行数int columnSpan, /表示占用的列数Qt:Alignment alignment=0 /指定对齐方式)Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayout)【例】【例】(难度一般) 通过实现一个“用户基本资料修改”的功能表来介绍如何使用基本布局管理,如QHBoxLayout类、QVBoxLayout类及QGridLayout类,效果如图3.7所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(
11、QLayout)本实例共用到四个布局管理器,分别是LeftLayout、RightLayout、BottomLayout和MainLayout,其布局框架如图3.8所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayout)(1)新建Qt Widgets Application(详见1.3.1节),项目名称为“UserInfo”,基类选择“QDialog”,取消“创建界面”复选框的选中状态。(2)打开“dialog.h”头文件,在头文件中声明对话框中的各个控件。添加代码。添加如下的头文件:#include #include #include #include #in
12、clude (3)打开“dialog.cpp”文件,在类Dialog的构造函数中添加代码。 Qt5开发及实例(第2版)-第3章Qt5布局管理3.4 基本布局(QLayout)(4)在“dialog.cpp”文件的开始部分加入以下头文件:#include#include#include#include#include#include#include#include(5)选择“构建”“构建项目UserInfo”命令,为了能够在界面上显示头像图片,请将事先准备好的图片312.png复制到D:QtCH3CH304build- UserInfo-Desktop_Qt_5_4_0_MinGW_32bit-
13、Debug目录下。运行程序,显示效果如图3.7所示。Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料通过实现修改用户资料功能这一综合实例,介绍如何使用布局方法实现一个复杂的窗口布局,如何使用分割窗口,以及如何使用堆栈窗体,效果如图3.9所示。(a)“基本信息”页面Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料(b)“联系方式”页面Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料(c)“详细资料”页面图3.9 修改用户资料实例效果Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实
14、例】:修改用户资料最外层是一个分割窗体QSplitter,分割窗体的左侧是一个QListWidget,右侧是一个QVBoxLayout布局,此布局包括一个堆栈窗体QStackWidget和一个按钮布局。在此堆栈窗体QStackWidget中包含三个窗体,每个窗体采用基本布局方式进行布局管理,如图3.10所示。 Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料1导航页实现导航页实现(1)新建Qt Widgets Application(详见1.3.1节),项目名称为“Example”,基类选择“QDialog”,取消“创建界面”复选框的选中状态。(2)在如图3.
15、10所示的布局框架中,框架左侧的页面(导航页)用Content类实现,类名命名为“Content”。打开“content.h”头文件,修改Content类继承自QFrame类,类声明中包含自定义的三个页面类对象、两个按钮对象及一个堆栈窗体对象,添加代码。(3)打开“Content.cpp”文件,添加代码。Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料2“修改用户基本信息修改用户基本信息”设计设计(1)添加该工程的提供主要显示用户基本信息界面的函数所在的文件,在“Example”项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件.”菜单项,在弹出的如图3
16、.11所示的对话框中选择“C+ Class”选项,单击“Choose.”按钮。Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料(2)弹出如图3.12所示的对话框,在“Base class”后面的下拉列表框中选择基类名“QWidget”,在“Class name”后面的文本框中输入类的名称“BaseInfo”。(3)打开“baseinfo.h”头文件,添加代码。(4)打开“baseinfo.cpp”文件,添加代码。Qt5开发及实例(第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料3“显示用户的联系方式显示用户的联系方式”设计设计(1)添加该工程的
17、提供主要显示用户的联系方式界面的函数所在的文件,在“Example”项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件.”菜单项,在弹出的对话框中选择“C+ Class”选项。单击“Choose.”按钮,弹出对话框,在“Base class”后面的下拉列表框中选择基类名“QWidget”,在“Class name”后面的文本框中输入类的名称“Contact”。(2)单击“下一步”按钮,单击“完成”按钮,添加“contact.h”头文件和“contact.cpp”源文件。(3)打开“contact.h”头文件,添加代码。(4)打开“contact.cpp”文件,添加代码。Qt5开发及实例(
18、第2版)-第3章Qt5布局管理3.5 【综合实例】:修改用户资料4“显示用户的详细资料显示用户的详细资料”设计设计 (1)添加主要显示用户的详细资料界面的函数所在的文件,在“Example”项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件.”菜单项,在弹出的对话框中选择“C+ Class”选项,单击“Choose.”按钮,弹出对话框,在“Base class”后面的下拉列表框中选择基类名“QWidget”,在“Class name”后面的文本框中输入类的名称“Detail”。(2)单击“下一步”按钮,单击“完成”按钮,添加“detail.h”头文件和“detail.cpp”源文件。(3)打开“d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西卫生健康职业学院单招职业倾向性考试模拟测试卷附答案
- 2026年湘南幼儿师范高等专科学校单招职业技能考试题库及答案1套
- 平顶山市2026年度市直机关公开遴选公务员备考题库有答案详解
- 广东交通职业技术学院2025年公开招聘工作人员备考题库及一套完整答案详解
- 广东机电职业技术学院2025年第三批公开招聘事业编制工作人员备考题库完整参考答案详解
- 广东省城市技师学院2025年公开招聘工作人员备考题库带答案详解
- 广东胥江文旅控股有限公司及下属企业2026年公开招聘工作人员备考题库含答案详解
- 广州大学2026年第一次公开招聘合同制A岗工作人员备考题库及一套完整答案详解
- 广州市天河区盈溪幼儿园2025年12月公开招聘编外教辅人员备考题库及参考答案详解
- 广州市幼儿师范学校附属幼儿园2026年1月公开招聘编外聘用制专任教师备考题库及一套参考答案详解
- (2025年)功能性消化不良中西医结合诊疗专家共识解读课件
- 2026春外研社版英语八下单词表(先鸟版)
- 人教版(PEP)四年级上学期英语期末卷(含答案)
- 非煤地下矿山员工培训
- 保安法律法规及业务能力培训
- 人员转签实施方案
- C强制认证培训资料课件
- 2025秋南方新课堂金牌学案中国历史七年级上册(配人教版)(教师用书)
- GB/T 6109.1-2025漆包圆绕组线第1部分:一般规定
- 前纵隔占位患者的麻醉管理要点(PASF 2025年)
- 企业财务会计制度完整模板
评论
0/150
提交评论