QHBoxLayout 默认采取的是以自左向右的方式顺序排列插入控件或子布局,也可通过调用 setDirection() 方法设定排列的顺序(如 layout->setDirection(QBoxLayout::RightToLeft))。
QVBoxLayout 默认采取的是以自上而下的方式顺序排列插入控件或子布局,也可通过调用 setDirection() 方法设定排列的顺序。
修改用户资料:
通过实现修改用户资料功能这一综合实例,介绍如何使用布局方法实现一个复杂的窗口布局,如何使用分割窗口,以及如何使用堆栈窗体。实例效果如图3.9 所示。
最外层是一个分割窗体 QSplitter,分割窗体的左侧是一个 QListWidget,右侧是一个 QVBoxLayout 布局,此布局包括一个堆栈窗体 QStackWidget 和一个按钮布局。在此堆栈窗体 QStackWidget 中包含三个页面,每个页面采用基本布局方式进行布局管理,如图3.10 所示。
具体实现步骤如下:
1. 导航页实现:
QSplitter 包含三个页面,每个页面分别布局 QVBoxLayout。
(1) 新建Qt Widgets Application (详见1.3.1 节),项目名称为"Example", 基类选择"QDialog", 类名命名为 "Content", 取消“创建界面“复选框的选中状态。
(2) 在如图3.10 所示的布局框架中,框架左侧的页面(导航页)就用Content 类来实现。
打开 "content.h" 头文件,修改Content 类继承自QFrame 类,类声明中包含自定义的三个页面类对象、两个按钮对象及一个堆栈窗体对象,添加如下代码:
//添加的头文件
#include <QStackedWidget>
#include <QPushButton>
#include "baseinfo.h"
#include "contact.h"
#include "detail.h"
class Content : public QFrame
{
Q_OBJECT
// 添加类成员变量和方法
};