重要函数:
1.void setCurrentIndex(int); //用下标显示当前页,.从0开始.
2.int count(); //返回页面的数量.
3.void insertWidget(int, QWidget*); //在下标为参数位置插入页.
4.void addWidget(QWidget*); //加上页.
5.void removeWidget(QWidget*); //删除页.

信号:

1.void currentChanged(int); //当前页面发生改变时,发出信号.
2.void widgetRemoved(int); //页面被删除时,发出信号.


首先我们添加一个类,名字自定义,我这里叫MyPicture.不用Qt设计师进行拖拽,而是进行手工布局,因为当部件的量很多或者需要自动生成的时候,手工布局显得更加灵活.


以下是”MyPicture.cpp”下的代码:

#include"MyPicture.h"MyPicture::MyPicture(QWidget*parent):QWidget(parent){ui.setupUi(this);//创建一个垂直布局.QVBoxLayout*vertLayout=newQVBoxLayout;for(inti=0;i<5;++i){//创建一个水平布局.QHBoxLayout*horiLayout=newQHBoxLayout;for(intj=0;j<5;++j){QLabel*temp=newQLabel("z");temp->resize(100,100);//也添加到vector容器里去,方便调用.this->labelArray.push_back(temp);//把label对象添加到水平布局中去.horiLayout->addWidget(temp);}//布局中可以添加布局.vertLayout->addLayout(horiLayout);}//最后应用垂直布局.this->setLayout(vertLayout);}MyPicture::~MyPicture(){}voidMyPicture::setText(QStringstr){for(inti=0;i<25;++i){this->labelArray[i]->setText(str);}}12345678910111213141516171819202122232425262728293031323334353637383940


以下是”MyPicture.h”的代码:

#ifndefMYPICTURE_H#defineMYPICTURE_H#include<QWidget>#include"ui_MyPicture.h"#include<QMessageBox>#include<QLabel>#include<QVBoxLayout>#include<QHBoxLayout>classMyPicture:publicQWidget{Q_OBJECTpublic:MyPicture(QWidget*parent=0);~MyPicture();voidsetText(QString);private:Ui::MyPictureui;QVector<QLabel*>labelArray;};#endif//MYPICTURE_H1234567891011121314151617181920212223242526


然后在c.ui处,进行拖拽,进行如下布局和命名.


然后是”c.cpp”的代码:

#include"c.h"c::c(QWidget*parent):QMainWindow(parent){ui.setupUi(this);initStackedWidget();//连接信号与槽.connect(ui.firstButton,SIGNAL(clicked()),this,SLOT(showFirstPageSlot()));connect(ui.secondButton,SIGNAL(clicked()),this,SLOT(showSecondPageSlot()));}c::~c(){}voidc::showFirstPageSlot(){//设置当前显示的页面ui.stackedWidget->setCurrentIndex(0);}voidc::showSecondPageSlot(){ui.stackedWidget->setCurrentIndex(1);}//初始化堆积页.voidc::initStackedWidget(){//先删除系统自动为你添加的两个页面.ui.stackedWidget->removeWidget(ui.page);ui.stackedWidget->removeWidget(ui.page_2);MyPicture*temp=newMyPicture;temp->setText(QString::fromLocal8Bit("哈哈"));ui.stackedWidget->addWidget(temp);MyPicture*i=newMyPicture;i->setText(QString::fromLocal8Bit("嘻嘻"));ui.stackedWidget->addWidget(i);}123456789101112131415161718192021222324252627282930313233343536373839404142


“c.h”的代码:

#ifndefC_H#defineC_H#include<QtWidgets/QMainWindow>#include"ui_c.h"#include<QStackedWidget>#include<QPushButton>#include<QMessageBox>#include"MyPicture.h"classc:publicQMainWindow{Q_OBJECTpublic:c(QWidget*parent=0);~c();//初始化堆积页.voidinitStackedWidget();privateslots:voidshowSecondPageSlot();voidshowFirstPageSlot();private:Ui::cClassui;};#endif//C_H12345678910111213141516171819202122232425262728293031


最后是”main.cpp”的代码:

#include"c.h"#include<QtWidgets/QApplication>#include"MyPicture.h"intmain(intargc,char*argv[]){QApplicationa(argc,argv);/*cw;w.show();*/MyPicturew;w.show();returna.exec();}