前前后后学习了四种布局管理器了,分别是盒子布局管理器QBoxLayout、网格布局管理器QGridLayout、表单布局管理器QFormLayout、栈式布局管理器QStackedLayout。
练习
可以通过这四种布局管理器实现一个向导界面,向导界面的作用就不用多说了吧,在电脑上装过软件的人都接触过,下一步、下一步、下一步、完成。向导界面就是用来指引用户操作的。
练习要求:在同一个界面上展现不同的向导页面;通过点击上一步或下一步进行页面切换;不同页面上的组件及组件排布都不相同;页面上的组件排布需要将四种布局管理器都用上。
直接通过图示展现我们需要做的以及如何做。
- 在界面整体使用QVBoxLayout管理QStackedLayout和QHBoxLayout,其中QHBoxLayout管理两个按钮,通过点击按钮设置QStackedLayout的currentIndex值达到显示不同页面的效果。
- QStackedLayout用来管理几个需要显示的页面。
- 之前在使用QStackedLayout时候也实现过,通过中间组件QWidget进行子组件管理,最后使用QStackedLayout对中间组件QWidget进行管理,这样就能形成一个丰富多样的向导页面。
- 这是因为任意的容器类都可以指定布局管理器,并且同一个布局管理器里面的组件拥有相同的父组件,这样在管理布局管理器的时候也就隐式的指定了父子关系,所以我们就能在QStackedLayout中使用多个页面的父组件作为其子组件进行管理。
上代码:
所需组件准备
QPushButton preBtn;
QPushButton nextBtn;
QStackedLayout sLayout;//栈式布局管理器
//界面所需组件
QLabel label[4];
QLineEdit edit[3];
QLabel text;
QPushButton Btn[3];
QWidget* get1stpage();//返回子页面所在父组件
QWidget* get2ndpage();
QWidget* get3rdpage();
private slots:
void OnPreBtnClicked();//与向导按钮关联的槽函数
void OnNextBtnClicked();
页面1:
QWidget* Widget::get1stpage()
{
QWidget* ret