重要函数: 
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 = new QVBoxLayout;    for (int i = 0; i < 5; ++i){        //创建一个水平布局.QHBoxLayout *horiLayout = new QHBoxLayout;        for (int j = 0; j < 5; ++j){QLabel *temp = new QLabel("z");temp->resize(100,100);            //也添加到vector容器里去,方便调用.this->labelArray.push_back(temp);            //把label对象添加到水平布局中去.horiLayout->addWidget(temp);}        //布局中可以添加布局.vertLayout->addLayout(horiLayout);}    //最后应用垂直布局.this->setLayout(vertLayout);
}MyPicture::~MyPicture()
{}void MyPicture::setText(QString str)
{    for (int i = 0; i < 25; ++i){        this->labelArray[i]->setText(str);}
}12345678910111213141516171819202122232425262728293031323334353637383940

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

#ifndef MYPICTURE_H#define MYPICTURE_H#include <QWidget>#include "ui_MyPicture.h"#include <QMessageBox>#include <QLabel>#include <QVBoxLayout>#include <QHBoxLayout>class MyPicture : public QWidget{Q_OBJECTpublic:MyPicture(QWidget *parent = 0);~MyPicture();    void setText(QString);private:Ui::MyPicture ui;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()
{}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;temp->setText(QString::fromLocal8Bit("哈哈"));ui.stackedWidget->addWidget(temp);MyPicture *i = new MyPicture;i->setText(QString::fromLocal8Bit("嘻嘻"));ui.stackedWidget->addWidget(i);
}123456789101112131415161718192021222324252627282930313233343536373839404142

“c.h”的代码:

#ifndef C_H#define C_H#include <QtWidgets/QMainWindow>#include "ui_c.h"#include <QStackedWidget>#include <QPushButton>#include <QMessageBox>#include "MyPicture.h"class c : public QMainWindow{Q_OBJECTpublic:c(QWidget *parent = 0);~c();    //初始化堆积页.void initStackedWidget();private slots:    void showSecondPageSlot();    void showFirstPageSlot();private:Ui::cClass ui;
};#endif // C_H12345678910111213141516171819202122232425262728293031

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

#include "c.h"#include <QtWidgets/QApplication>#include "MyPicture.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);    /*c w;w.show();*/MyPicture w;w.show();    return a.exec();
}

转载于:https://blog.51cto.com/13119855/1973111

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

  1. php实现轮播图代码,微信小程序实例:轮播图的代码实现与分析

    本篇文章给大家带来的内容是关于微信小程序实例:轮播图的代码实现与分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 本文来说说轮播图,最常见的一个轮播图,中间带小圆点,自动轮播. S ...

  2. QT学习:基于UDP的网络广播程序

    用户数据报协议(User Data Protocol,UDP)是一种简单轻量级.不可靠.面向数据报.无连接的 传输层协议,可以应用在可靠性不是十分重要的场合,如短消息.广播信息等. 适合应用的情况有以 ...

  3. Qt学习: QFileDialog和QMessageBox的用法和程序示例

    *QMessageBox的用法: members: 1.void setStandardButtons(QMessageBox::); //设置按钮.2.void setText(QString); ...

  4. MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)

    MOOSE多物理场耦合平台入门学习记录 MOOSE的简介 MOOSE的安装 Linux和Mac Windows MOOSE程序的一般开发流程-以导热微分方程为例 简单问题的有限元处理 MOOSE程序的 ...

  5. python聊天程序程序代码_python聊天程序实例代码分享

    代码简单,直接看代码吧: 代码如下: import socket import threading import re #import Tkinter def ser(): s=socket.sock ...

  6. 腾讯云微搭低代码餐饮小程序实例

    前言 我们在日常就餐的过程中,餐饮店经常会使用餐饮小程序来管理台位,来控制每桌的就餐或者空闲状态.一般是餐桌上进行扫码点餐,在PC端来控制收费. 本篇教程,我们就结合这个实际的业务场景,利用微搭低代码 ...

  7. 【Qt学习笔记】3.布局

    一.手动布局 布局,Layout,就是把各个控件放在合适的位置,占据适当大小的空间. 在Qt中,使用布局器QLayout进行布局,QLayout本质上是一个工具类. 1.它为我们自动计算各个控件的大小 ...

  8. QT学习笔记(1)----- QT简介

    名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...

  9. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

最新文章

  1. Learn OpenGL (五):向量
  2. shell下的seq用法
  3. Bleve:来自Couchbase、基于Go语言的全文索引与检索库
  4. WebC.BBS - 网上团队管理-责任心,主动性,积极性划分
  5. java7新特性之Try-with-resources statement
  6. Angular中实现路由跳转并通过get方式传递参数
  7. php代码expl,php – 参数号无效:参数未定义Explination
  8. 摘抄自知乎的redis相关
  9. HTML5 viewport 标签与 CSS3 background-size 属性 使图片完全适应区域内容
  10. STL - MainTao - 博客园
  11. 对js运算符“||”和“”的总结
  12. emlog插件,emlog采集插件,emlog伪原创发布插件
  13. 二极管计算机原理,二极管逻辑电路
  14. 盘姬工具箱WV1.10
  15. O2OO是一个汽车故障诊断工具
  16. QQ等级图标排名说明_QQ等级表,QQ最高等级(皇冠) qq到一星要5天
  17. 物联网的关键 - 传感器
  18. 洛谷P1378 油滴扩展
  19. Mac 打印机打印乱码%! PS -Adobe -3.0 %!APL_DSL_Encoding:UTF8
  20. shell脚本增加回车符

热门文章

  1. CAD二次开发 -可恶的版本问题
  2. 向大家分享一个shell脚本的坑
  3. java 开发技巧_优秀的Java程序员必须掌握的代码编程技巧
  4. PD、QC、SCP、VOOC……充电协议与移动电源的那些事儿
  5. Java爬虫(四)通过屏幕录制顺序实现目标输入和点击
  6. UC浏览器 Android平台7.0Beta2版发布
  7. (五)Softmax 回归
  8. Node.js之Stream
  9. 优思学院|怎么把DPMO/不良率换算成六西格玛水平?
  10. 红利殆尽,流量瓶颈?