qt 开发笔记堆栈布局的应用

1.概要

画面中有一处位置,有个按钮点击后,这片位置完全换成另一个画面,这中情况特别适合用堆栈布局。

//堆栈布局的应用
#include <QStackedLayout>
QStackedLayout *layout = new QStackedLayout(this);
layout->setCurrentIndex(0); 

//信号和槽的链接
QPushButton *foundButton = findChild<QPushButton *>("pushButton_2");
    if (foundButton) {
        // 连接点击事件
        connect(foundButton, &QPushButton::clicked, this, &FormMy1::onButtonClicked);
    }

private slots:
    void onButtonClicked();

2.代码

2.1 FormMy1

#ifndef FORMMY1_H
#define FORMMY1_H#include <QWidget>
#include <QStackedLayout>namespace Ui {
class FormMy1;
}class FormMy1 : public QWidget
{Q_OBJECTpublic:QStackedLayout *layout;explicit FormMy1(QWidget *parent = nullptr);~FormMy1();
private slots:void onButtonClicked();
private:Ui::FormMy1 *ui;
};#endif // FORMMY1_H
#include "formmy1.h"
#include "ui_formmy1.h"
#include <QPushButton>FormMy1::FormMy1(QWidget *parent): QWidget(parent), ui(new Ui::FormMy1)
{ui->setupUi(this);// 根据名称查找按钮QPushButton *foundButton = findChild<QPushButton *>("pushButton_2");if (foundButton) {// 连接点击事件connect(foundButton, &QPushButton::clicked, this, &FormMy1::onButtonClicked);}
}void FormMy1::onButtonClicked() {// 处理按钮点击事件//qDebug("Button clicked!");layout->setCurrentIndex(1);
}FormMy1::~FormMy1()
{delete ui;
}

2.2 FormMy2

#ifndef FORMMY2_H
#define FORMMY2_H#include <QWidget>
#include <QStackedLayout>namespace Ui {
class FormMy2;
}class FormMy2 : public QWidget
{Q_OBJECTpublic:QStackedLayout *layout;explicit FormMy2(QWidget *parent = nullptr);~FormMy2();
private slots:void onButtonClicked();
private:Ui::FormMy2 *ui;
};#endif // FORMMY2_H

 

#include "formmy2.h"
#include "ui_formmy2.h"FormMy2::FormMy2(QWidget *parent): QWidget(parent), ui(new Ui::FormMy2)
{ui->setupUi(this);// 根据名称查找按钮QPushButton *foundButton = findChild<QPushButton *>("pushButton");if (foundButton) {// 连接点击事件connect(foundButton, &QPushButton::clicked, this, &FormMy2::onButtonClicked);}
}void FormMy2::onButtonClicked() {// 处理按钮点击事件//qDebug("Button clicked!");layout->setCurrentIndex(0);
}FormMy2::~FormMy2()
{delete ui;
}

2.3 FormStacked

#ifndef FORMSTACKED_H
#define FORMSTACKED_H#include <QWidget>namespace Ui {
class FormStacked;
}class FormStacked : public QWidget
{Q_OBJECTpublic:explicit FormStacked(QWidget *parent = nullptr);~FormStacked();private:Ui::FormStacked *ui;
};#endif // FORMSTACKED_H
#include "formstacked.h"
#include "ui_formstacked.h"
#include <QStackedLayout>
#include "formmy1.h"
#include "formmy2.h"FormStacked::FormStacked(QWidget *parent): QWidget(parent), ui(new Ui::FormStacked)
{ui->setupUi(this);QStackedLayout *layout = new QStackedLayout(this);FormMy1* my1 = new FormMy1(this);my1->layout = layout;FormMy2* my2 = new FormMy2(this);my2->layout = layout;layout->addWidget(my1);layout->addWidget(my2);layout->setCurrentIndex(0); // 初始显示第二个窗口部件//this->setLayout(layout);
}FormStacked::~FormStacked()
{delete ui;
}

 

2.4 Widget

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}

2.5 main.cpp

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

3.运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Scrollview的Scrollbar控制方法

备忘&#xff1a;碰到用scrollview自带的scrollbar去控制滑动&#xff0c;结果发现用代码控制scrollbar.value无效&#xff0c;搜了一下都是说用scrollRect.verticalNormalizedPosition和scrollRect.horizontalNormalizedPosition来控制的。我寻思着有关联的scrollbar为什么用不…

【代码随想录算法训练营第六十天|并查集、卡码网107.寻找可能存在的路径】

文章目录 卡码网107.寻找可能存在的路径 并查集基础内容还是看代码随想录 并查集 卡码网107.寻找可能存在的路径 纯并查集的基础应用&#xff0c;并查集只是看元素是否在同一个集合中&#xff0c;因此在加入的时候需要先查看两个元素是否已经在一个并查集中&#xff0c;如果不…

Interview preparation--Https 工作流程

HTTP 传输的弊端 如上图&#xff0c;Http进行数据传输的时候是明文传输&#xff0c;导致任何人都有可能截获信息&#xff0c;篡改信息如果此时黑客冒充服务器&#xff0c;或者黑客窃取信息&#xff0c;则其可以返回任意信息给客户端&#xff0c;而且不被客户端察觉&#xff0c;…

2.3.2 主程序和外部IO交互 (文件映射方式)----C#调用范例

2.3.2 主程序和外部IO交互 &#xff08;文件映射方式&#xff09;----C#调用范例 效果显示 1 说明 1 .1 Test_IOServer是64bit 程序&#xff0c; BD_SharedIOServerd.dll 在 /Debug文件夹中 1 .2 Test_IOServer是32bit 程序&#xff0c; BD_SharedIOClientd.dll (32bit&#…

[FreeRTOS 内部实现] 事件组

文章目录 事件组结构体创建事件组事件组等待位事件组设置位 事件组结构体 // 路径&#xff1a;Source/event_groups.c typedef struct xEventGroupDefinition {EventBits_t uxEventBits;List_t xTasksWaitingForBits; } EventGroup_t;uxEventBits 中的每一位表示某个事件是否…

适用于Mac和Windows的最佳iPhone恢复软件

本文将指导您选择一款出色的iPhone数据恢复软件来检索您的宝贵数据。 市场上有许多所谓的iPhone恢复程序。各种程序很难选择并选择其中之一。一旦您做出了错误的选择&#xff0c;您的数据就会有风险。 最好的iPhone数据恢复软件应包含以下功能。 1.安全可靠。 2.恢复成功率高…

java MultipartFile multipartFile 文件上传重命名

java MultipartFile multipartFile 文件上传重命名 我们在文件上传的时候&#xff0c;需要考虑重名覆盖问题&#xff0c;为逻辑严谨&#xff0c;需要在文件上传的时候&#xff0c;将文件名前方拼接UUID或者时间戳&#xff0c;来区分同名文件&#xff0c;但因此引出如何修改前端…

Windows下Visual Studio 中配置第一个CUDA工程

今天整NVIDIA 的CUDA 安装和第一个CUDA 代码&#xff0c;顺便添加一个有CUDA工程的空框架。 &#xff08;1&#xff09;首先确认自己的CUDA 已经安装成功 >>cmd 进入命令窗&#xff0c;在窗口输入查看cuda 是否安装成功&#xff0c;能查到CUDA的版本号&#xff0c;表示安…

VitePress安装部署

VitePress安装部署 VitePress安装步骤 安装 Node环境 官网下载&#xff1a;https://nodejs.org/zh-cn 傻瓜式安装到完成 npm环境 安装完Node环境之后&#xff0c;可以直接运行下面的命令安装npm npm install -g pnpm关于pnpm源&#xff1a; 有时候需要国内源&#xff0c…

0706_ARM8

练习1&#xff1a; PWM控制蜂鸣器&#xff0c;风扇&#xff0c;震动马达 pwm.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_tim.h"//蜂鸣器 PB6 TIME4_CH1 初…

基于python的数据分解-趋势-季节性-波动变化

系列文章目录 前言 时间序列数据的分解&#xff0c;一般分为趋势项&#xff0c;季节变化项和随机波动项。可以基于加法或者乘法模型。季节变化呈现出周期变化&#xff0c;因此也叫季节效应(周期&#xff09;。 一、数据分解步骤 &#xff08;1&#xff09;估计时间序列的长期…

仪器校准后出了校准证书后,是不是就代表仪器合格了?

仪器校准是一门技术活&#xff0c;对于从事生产制造的企业而言&#xff0c;是不可或缺的一环&#xff0c;因为这与产品质量密切相关。所以&#xff0c;了解仪器校准的相关知识也变得尤为重要。 在拿到校准证书后&#xff0c;是不是说明仪器合格了&#xff1f;相信不少企业品管人…

指针回顾.

指针的主要作用&#xff1a;提供一种间接访问数据的方法 1.地址:区分不同内存空间的编号 2.指针:指针就是地址,地址就是指针 3.指针变量:存放指针的变量称为指针变量,简称为指针 1.指针的定义 int *p NULL; int *q NULL; char *p NULL; double *p NUL…

PCDN技术如何提高内容分发效率?(贰)

PCDN技术通过以下方式提高内容分发效率: 1.利用用户设备作为分发节点:与传统的 CDN技术主要依赖中心化服务器不同&#xff0c; PCDN技术利用用户的设备作为内容分发的节点。当用户下载内容时&#xff0c;他们的设备也会成为内容分发的一部分&#xff0c;将已下载的内容传递给其…

第34集《大乘起信论》

好&#xff0c;请大家打开《讲义》七十六页&#xff0c; 子三、释双行 前面是把大乘的止跟大乘的观&#xff0c;各别的说明&#xff0c;这个是针对初学的菩萨&#xff0c;应该是这样修学的&#xff1b;这个地方是告诉我们的目标&#xff0c;应该使令自己在操作上最好是能够止…

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

set_intersection(重要) 求两个有序的序列的交集. 函数声明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1开头InputIterator1 _Last1, //容器2结尾(不包含)Inp…

jenkins配置gitee源码地址连接不上

报错信息如下&#xff1a; 网上找了好多都没说具体原因&#xff0c;最后还是看jenkins控制台输出日志发现&#xff1a; ssh命令执行失败&#xff08;git环境有问题&#xff0c;可能插件没安装成功等其他问题&#xff09; 后面发现是jenkins配置git的地方git安装路径错了。新手…

加入新数据预测,基于黏菌优化算法SMA优化SVM支持向量机回归预测(多输入单输出)

加入新数据预测&#xff0c;基于黏菌优化算法SMA优化SVM支持向量机回归预测&#xff08;多输入单输出&#xff09; 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0c;程序…

cmake find_package 使用笔记

目录 1 find_package2 config mode2.1 搜索的文件名2.2 搜索路径 3 module mode3.1 搜索的文件名3.2 搜索路径 参考 1 find_package 这是官方文档 下面是学习总结&#xff1a; 首先是find_package的作用是什么&#xff1f;引入预编译的库。 find_package有两种模式&#xff1a…

error executing init.py No module name “imp“ ida

在某论坛下了个IDA&#xff0c;打开报错No module name “imp”&#xff0c;这是由于高版本python已经移除了imp&#xff0c;新版使用import importlib。 1、打开文件D:\IDA_Pro_7.7\python\3\ida_idaapi.py 2、替换import imp 为 import importlib。 3、替换IDAPython_LoadPr…