Qt学习: QStackedWidget和手工代码布局的程序实例
重要函数:
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和手工代码布局的程序实例相关推荐
- php实现轮播图代码,微信小程序实例:轮播图的代码实现与分析
本篇文章给大家带来的内容是关于微信小程序实例:轮播图的代码实现与分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 本文来说说轮播图,最常见的一个轮播图,中间带小圆点,自动轮播. S ...
- QT学习:基于UDP的网络广播程序
用户数据报协议(User Data Protocol,UDP)是一种简单轻量级.不可靠.面向数据报.无连接的 传输层协议,可以应用在可靠性不是十分重要的场合,如短消息.广播信息等. 适合应用的情况有以 ...
- Qt学习: QFileDialog和QMessageBox的用法和程序示例
*QMessageBox的用法: members: 1.void setStandardButtons(QMessageBox::); //设置按钮.2.void setText(QString); ...
- MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)
MOOSE多物理场耦合平台入门学习记录 MOOSE的简介 MOOSE的安装 Linux和Mac Windows MOOSE程序的一般开发流程-以导热微分方程为例 简单问题的有限元处理 MOOSE程序的 ...
- python聊天程序程序代码_python聊天程序实例代码分享
代码简单,直接看代码吧: 代码如下: import socket import threading import re #import Tkinter def ser(): s=socket.sock ...
- 腾讯云微搭低代码餐饮小程序实例
前言 我们在日常就餐的过程中,餐饮店经常会使用餐饮小程序来管理台位,来控制每桌的就餐或者空闲状态.一般是餐桌上进行扫码点餐,在PC端来控制收费. 本篇教程,我们就结合这个实际的业务场景,利用微搭低代码 ...
- 【Qt学习笔记】3.布局
一.手动布局 布局,Layout,就是把各个控件放在合适的位置,占据适当大小的空间. 在Qt中,使用布局器QLayout进行布局,QLayout本质上是一个工具类. 1.它为我们自动计算各个控件的大小 ...
- QT学习笔记(1)----- QT简介
名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...
- QT学习笔记(十四):QLayout的属性介绍
QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...
最新文章
- 一个计算crc校验的小工具的编写。
- Dapper+SqlServerCe部署
- 2021-02-27 永磁同步电机 自抗扰控制 PI调节器 矢量控制 SVPWM
- VMware / 三种联网方法及原理
- css宋体代码_前端开发必备的CSS命名规范与常用CSS代码集合
- css3-11 如何实现2D动画
- c是过程化语言吗数据库,A.数据库语言B.过程化语言C.宿主语言D.数据库管理系统...
- 【scala】IDEA运行scala程序:Error:scalac: bad option: ‘-make:transitive‘
- L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT
- 2.6 相对和绝对路径 2.7 cd命令 2.8 创建和删除目录mkdir/rmdir 2.9 rm命令
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) --javaweb,asp.net
- 2016年4月计算机组成原理试题答案,2018年04月自学考试02318《计算机组成原理》真题及答案...
- 一套键鼠同时控制三台电脑?罗技无线键鼠为办公效率加速
- UG二次开发GRIP刻字
- 游戏对战匹配逻辑小结
- 淘宝抽奖html 页面,基于jQuery实现的双11天猫拆红包抽奖效果
- 谈谈企业信息化 一种比较简单、灵活的产品物料多单位实现方案
- C语言程序设计(常用函数说明)
- 记录——红外成像光学系统进展与展望
- 微信小程序授权登录,跳转页面后在跳回首页不用再次登录
热门文章
- 简单粗暴破解极域课堂之万能密码
- 你的职场转折点是什么?你得到了怎样的成长和经验?
- 社区划分的标准--模块度
- RabbitMQ vhost权限问题
- MYSQL数据库周德伟教程后题_《MySQL数据库基础实例教程》编者:周德伟,覃国蓉著【摘要 书评 在线阅读】-苏宁易购图书...
- 合法的出栈顺序判断(c++)
- 小米向3142人奖励股票,价值约9.42亿元;苹果曝严重安全漏洞;TikTok被曝应用内浏览器监控用户输入和点击内容|极客头条
- vue中配置babel-polyfill
- python程序设计基础第二版pdf下载_Python程序设计基础董付国课后答案-Python程序设计基础第二版清华大学出版社PDF电子版完整高清版-精品下载...
- canvas 绘制钟表