【Qt5开发及实例】5、布局管理之堆栈窗体QStackedWidget类
2014-12-21 20:05
537 查看
老规矩,给个目标实现以下:
代码展示,
首先创建一个项目,不要界面,选择基类是QDialog这个,后面名字的话随便改改
我的类名是:StackDlg
所以之后,只要在stackdlg.h里面加入两个头文件,等会要用的
全部代码
然后在stackdlg.cpp里面是:
其余没变,怎么感觉很累呢???
然后修改一点点,我们了解一下那个QListWidget到底是个什么情况
执行结果:
代码展示,
首先创建一个项目,不要界面,选择基类是QDialog这个,后面名字的话随便改改
我的类名是:StackDlg
所以之后,只要在stackdlg.h里面加入两个头文件,等会要用的
#include <QListWidget> #include <QStackedWidget> #include <QLabel> #include <QHBoxLayout>
全部代码
#ifndef STACKDLG_H #define STACKDLG_H #include <QDialog> #include <QListWidget> #include <QStackedWidget> #include <QLabel> class StackDlg : public QDialog { Q_OBJECT public: StackDlg(QWidget *parent = 0); ~StackDlg(); private: QListWidget *list; //列表框 QStackedWidget *stack; //堆栈窗体 QLabel *label1; //文本窗体 QLabel *label2; QLabel *label3; }; #endif // STACKDLG_H
然后在stackdlg.cpp里面是:
#include "stackdlg.h"
#include <QListWidget> #include <QStackedWidget> #include <QLabel> #include <QHBoxLayout>
StackDlg::StackDlg(QWidget *parent)
: QDialog(parent) //继承过来的构造函数
{
setWindowTitle(tr("StackedWidget")); //设置窗体的名字
list = new QListWidget(this); //创建一个列表框
//往这个列表框里面添加元素
list->insertItem(0, tr("NO.1"));
list->insertItem(1, tr("NO.2"));
list->insertItem(2, tr("NO.3"));
label1 = new QLabel(tr("测试1"));
label2 = new QLabel(tr("测试2"));
label3 = new QLabel(tr("测试3"));
stack = new QStackedWidget(this); //为这个主窗体创建一个堆栈窗体
stack->addWidget(label1); //添加一个文本进入窗体
stack->addWidget(label2); //添加第二个
stack->addWidget(label3); //添加第三个
QHBoxLayout *mainLayout = new QHBoxLayout(this); //设置一个布局
mainLayout->setMargin(5); //设置这个对话框的边距
mainLayout->setSpacing(5); //设置各个控件之间的边距
mainLayout->addWidget(list); //把list里面的内容加到窗体里面
mainLayout->addWidget(stack, 0, Qt::AlignHCenter);
mainLayout->setStretchFactor(list, 3); //设定为可伸缩的控件,第一个参数是用于指定设置的控件,第二个大于0表示这个控件可伸缩
mainLayout->setStretchFactor(stack, 3);
connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
}
StackDlg::~StackDlg()
{
}
其余没变,怎么感觉很累呢???
然后修改一点点,我们了解一下那个QListWidget到底是个什么情况
#include "stackdlg.h"
#include <QListWidget> #include <QStackedWidget> #include <QLabel> #include <QHBoxLayout>
StackDlg::StackDlg(QWidget *parent)
: QDialog(parent) //继承过来的构造函数
{
setWindowTitle(tr("StackedWidget")); //设置窗体的名字
list = new QListWidget(this); //创建一个列表框
//往这个列表框里面添加元素
list->insertItem(0, tr("NO.1"));
list->insertItem(1, tr("NO.2"));
list->insertItem(2, tr("NO.3"));
list->insertItem(2, tr("222")); //后加入的会覆盖前面的,这里和上面不一样,其余一样
label1 = new QLabel(tr("测试1"));
label2 = new QLabel(tr("测试2"));
label3 = new QLabel(tr("测试3"));
stack = new QStackedWidget(this); //为这个主窗体创建一个堆栈窗体
stack->addWidget(label1); //添加一个文本进入窗体
stack->addWidget(label2); //添加第二个
stack->addWidget(label3); //添加第三个
QHBoxLayout *mainLayout = new QHBoxLayout(this); //设置一个布局
mainLayout->setMargin(5); //设置这个对话框的边距
mainLayout->setSpacing(5); //设置各个控件之间的边距
mainLayout->addWidget(list); //把list里面的内容加到窗体里面
mainLayout->addWidget(stack, 0, Qt::AlignHCenter);
mainLayout->setStretchFactor(list, 3); //设定为可伸缩的控件,第一个参数是用于指定设置的控件,第二个大于0表示这个控件可伸缩
mainLayout->setStretchFactor(stack, 3);
connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
}
StackDlg::~StackDlg()
{
}
执行结果:
相关文章推荐
- Qt布局管理: 堆栈窗体QStackedWidget类(纯代码实现)
- Qt布局管理-堆栈窗体QStackedWidget类
- 布局管理(分割窗口QSplitter类、停靠窗口QDockWidget类、堆栈窗体QStackedWidget类、基本布局(QLayout))
- Qt之布局管理——堆栈窗体QStackedWidget
- 堆栈窗体QStackedWidget类以及布局QSplitter
- 【Qt5开发及实例】4、布局管理之停靠窗口QDockWidget类
- 【Qt5开发及实例】3、布局管理之分割窗口QSplitter
- 【Qt5开发及实例】6、布局管理之基本布局
- Qt学习——堆栈窗体QStackedWidget类
- 堆栈窗体QStackedWidget类
- Qt学习——堆栈窗体QStackedWidget类
- Qt学习——堆栈窗体QStackedWidget类
- [QT]QT教程之实例分析[五]堆栈窗体 (QStackedWidget)
- 堆栈窗体QStackedWidget类
- [QT]QT教程之实例分析[五]堆栈窗体 (QStackedWidget)
- Qt5主窗体程序: 文本编辑器的实现(Qt5开发及实例)
- QT布局管理之堆栈窗体
- Qt学习——堆栈窗体QStackedWidget类 .
- Qt学习——堆栈窗体QStackedWidget类
- Qt5主窗体程序: 文本编辑器的实现(Qt5开发及实例)