Qt学习4之QStackedWidget
2017-01-08 11:10
483 查看
学习了一遍QDockWidget类的使用,堆栈窗口,选择基类为“QDialog”
在工程名的h文件中
#include "qtstackedwidget.h"
QtStackedWidget::QtStackedWidget(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
setWindowTitle(tr("StackedWidget"));
list = new QListWidget(this);
//新建一个QListWidget的对象
list->insertItem(0, tr("Window1"));
list->insertItem(1, tr("Window2"));
list->insertItem(2, tr("Window3"));
//插入三个条目作为选择项
label1 = new QLabel(tr("WindowTest1"));
label2 = new QLabel(tr("WindowTest2"));
label3 = new QLabel(tr("WindowTest3"));
//创建三个标签
stack = new QStackedWidget(this);
//新建一个QStackedWidget的对象
stack->addWidget(label1);
stack->addWidget(label2);
stack->addWidget(label3);
//将QLabel加入stack
QHBoxLayout *mainLayout = new QHBoxLayout(this);
//对整个对话框进行布局
mainLayout->setMargin(5);
//设定对话框(或窗体)的边距为5.
mainLayout->setSpacing(5);
//设定各个控件之间的间距为5.
mainLayout->addWidget(list);
//将QListWidget加入mainLayout
mainLayout->addWidget(stack, 0, Qt::AlignHCenter);
//将QStackedWidget加入mainLayout,stretch factor = 0,保持默认大小, AlignHCenter为水平方向居中。
mainLayout->setStretchFactor(list, 1);
mainLayout->setStretchFactor(stack, 3);
//不仅使list和stack变为可伸缩型,而且还使stack的显示大小为list的3倍
connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
//此处的堆栈窗体index按插入顺序从0起依次排序,与QListWidget的条目顺序一致。
}
效果如图:
![](https://img-blog.csdn.net/20170108111200170)
对于这个堆栈窗口界面的产生,我得出了一些总结:
1、stretch factor表示的是伸缩因子。
值为0,则该窗口一直保持默认大小。
值为1,则该窗口随着主窗口进行放大缩小。
值为3,则该窗口随着主窗口进行放大缩小,且其大小一直是值为1的窗口的3倍。
当然,这个3倍只是尽可能的达到3倍,受到了其他限制,如插入窗口的控件的最小尺寸。
2、connect(list, SIGNAL(currentRowChanged(int)), stack,
SLOT(setCurrentIndex(int)));
这个信号与槽相当于传递了一个int型变量,通过得到当前list改变后的row值,然后用来设置当前stack的索引值。
在工程名的h文件中
#ifndef QTSTACKEDWIDGET_H #define QTSTACKEDWIDGET_H #include <QtWidgets/QDialog> #include "ui_qtstackedwidget.h" #include <QListWidget> #include <QStackedWidget> #include <QLabel> #include <QHBoxLayout> class QtStackedWidget : public QDialog { Q_OBJECT public: QtStackedWidget(QWidget *parent = 0); ~QtStackedWidget(); private: Ui::QtStackedWidgetClass ui; private: QListWidget *list; QStackedWidget *stack; QLabel *label1; QLabel *label2; QLabel *label3; };在工程名的cpp文件中
#include "qtstackedwidget.h"
QtStackedWidget::QtStackedWidget(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
setWindowTitle(tr("StackedWidget"));
list = new QListWidget(this);
//新建一个QListWidget的对象
list->insertItem(0, tr("Window1"));
list->insertItem(1, tr("Window2"));
list->insertItem(2, tr("Window3"));
//插入三个条目作为选择项
label1 = new QLabel(tr("WindowTest1"));
label2 = new QLabel(tr("WindowTest2"));
label3 = new QLabel(tr("WindowTest3"));
//创建三个标签
stack = new QStackedWidget(this);
//新建一个QStackedWidget的对象
stack->addWidget(label1);
stack->addWidget(label2);
stack->addWidget(label3);
//将QLabel加入stack
QHBoxLayout *mainLayout = new QHBoxLayout(this);
//对整个对话框进行布局
mainLayout->setMargin(5);
//设定对话框(或窗体)的边距为5.
mainLayout->setSpacing(5);
//设定各个控件之间的间距为5.
mainLayout->addWidget(list);
//将QListWidget加入mainLayout
mainLayout->addWidget(stack, 0, Qt::AlignHCenter);
//将QStackedWidget加入mainLayout,stretch factor = 0,保持默认大小, AlignHCenter为水平方向居中。
mainLayout->setStretchFactor(list, 1);
mainLayout->setStretchFactor(stack, 3);
//不仅使list和stack变为可伸缩型,而且还使stack的显示大小为list的3倍
connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
//此处的堆栈窗体index按插入顺序从0起依次排序,与QListWidget的条目顺序一致。
}
效果如图:
对于这个堆栈窗口界面的产生,我得出了一些总结:
1、stretch factor表示的是伸缩因子。
值为0,则该窗口一直保持默认大小。
值为1,则该窗口随着主窗口进行放大缩小。
值为3,则该窗口随着主窗口进行放大缩小,且其大小一直是值为1的窗口的3倍。
当然,这个3倍只是尽可能的达到3倍,受到了其他限制,如插入窗口的控件的最小尺寸。
2、connect(list, SIGNAL(currentRowChanged(int)), stack,
SLOT(setCurrentIndex(int)));
这个信号与槽相当于传递了一个int型变量,通过得到当前list改变后的row值,然后用来设置当前stack的索引值。
相关文章推荐
- qt的两个类学习:QStackedWidget和QListWidget
- Qt学习笔记,设置QTabWidget的TabBar的属性
- Qt基础学习(6)------多页面切换之QTabWidget
- qt学习:Qt中Item Widget初步探索
- Qt学习之解决QListWidgetItem有重叠时,点一下全部选中的问题
- Qt学习之QListWidget删除Item
- Qt 学习(7)QTableWidget
- Qt学习笔记 TableWidget使用说明和增删改操作的实现
- Qt 学习之路 2(42):QListWidget、QTreeWidget 和 QTableWidget
- QT学习2:Table/List/Tree的View,Widget,Model相关
- Qt基础学习(6)------多页面切换之QTabWidget
- Qt学习:项视图类之QTableWidget
- Qt学习:项视图类之QListWidget
- Qt学习笔记--窗口部件(Widget)
- Qt学习笔记 ListWidget的增删改
- Qt学习笔记,设置QTabWidget的TabBar的属性
- Qt学习:Qt中QDockWidget的简单用法
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- Qt学习笔记--窗口部件(Widget)
- Qt学习笔记:QMainWindow与QDockWidget