Qt学习:QStackedWidget和手工代码布局的程序实例

  

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

<>强信号:

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

<人力资源/>

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

<人力资源/>

以下是“MyPicture。cpp”下的代码:

# include “MyPicture.h”MyPicture: MyPicture (QWidget  *父母)   ,,,:,QWidget(父)   {   ,,,ui.setupUi(这个),,,,,//创建一个垂直布的局。   ,,,QVBoxLayout  * vertLayout =, new  QVBoxLayout;,,,, for  (int 小姐:=,0;,小姐:& lt;, 5,, + + i)   ,,,{,,,,,,,//创建一个水平布的局。   ,,,,,,,QHBoxLayout  * horiLayout =, new  QHBoxLayout;,,,,,,,, for  (int  j =, 0;, j  & lt;, 5,, + + j)   ,,,,,,,{   ,,,,,,,,,,,QLabel  * temp =, new  QLabel (“z”);   ,,,,,,,,,,,临时→调整(100100年),,,,,,,,,,,,,//也添加到向量容器里去,方便调用。   ,,,,,,,,,,,这个→labelArray.push_back(临时),,,,,,,,,,,,,//把标签对象添加到水平布局中去。   ,,,,,,,,,,,horiLayout→addWidget(临时);   ,,,,,,,},,,,,,,,//布局中可以添加布的局。   ,,,,,,,vertLayout→addLayout (horiLayout);   ,,,},,,,//最后应用垂直布的局。   ,,,这个→setLayout (vertLayout);   }      MyPicture:: ~ MyPicture ()   {      }void  MyPicture:: setText (QString  str)   {,,,for  (int 小姐:=,0;,小姐:& lt;, 25岁,,+ + i)   ,,,{,,,,,,,这个→labelArray[我]→setText (str);   ,,,}   }12345678910111213141516171819202122232425262728293031323334353637383940 <人力资源/>

以下是“MyPicture。h”的代码:

# ifndef  MYPICTURE_H # define  MYPICTURE_H # include  & lt; QWidget> # include “ui_MyPicture.h”# include  & lt; QMessageBox> # include  & lt; QLabel> # include  & lt; QVBoxLayout> # include  & lt; QHBoxLayout> class  MyPicture :, public  QWidget {   ,,,Q_OBJECTpublic:   ,,,MyPicture (QWidget  * parent =, 0);   ,,,~ MyPicture (),,,,, void  setText (QString);私人:   ,,,Ui: MyPicture 界面;   ,,,QVector <人力资源/>

然后在c.ui处,进行拖拽,进行如下布局和命名只
 Qt学习:QStackedWidget和手工代码布局的程序实例

<人力资源/>

然后是“c。cpp”的代码:

# include “刘昀“c: c (QWidget  *父母)   ,,,:,QMainWindow(父)   {   ,,,ui.setupUi(这个);   ,,,initStackedWidget(),,,,,//连接信号与槽。   ,,,连接(ui.firstButton,,信号(点击()),,,,槽(showFirstPageSlot ()));   ,,,连接(ui.secondButton,,信号(点击()),,,,槽(showSecondPageSlot ()));   }      c:: ~ c ()   {      }void  c:: showFirstPageSlot ()   {,,,//设置当前显示的页面   ,,,ui.stackedWidget→setCurrentIndex (0);   }void  c:: showSecondPageSlot ()   {   ,,,ui.stackedWidget→setCurrentIndex (1);   }//初始化堆积页.void  c: initStackedWidget ()   {,,,//先删除系统自动为你添加的两个页面。   ,,,ui.stackedWidget→removeWidget (ui.page);   ,,,ui.stackedWidget→removeWidget (ui.page_2);      ,,,MyPicture  * temp =, new  MyPicture;   ,,,临时→setText (QString: fromLocal8Bit(“哈哈"));   ,,,ui.stackedWidget→addWidget(临时);      ,,,MyPicture  *小姐:=,new  MyPicture;   ,,,我→setText (QString: fromLocal8Bit(“嘻嘻”));   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Qt学习:QStackedWidget和手工代码布局的程序实例