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_OBJECT

public:
    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_OBJECT

public:
    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_OBJECT

public:
    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_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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.运行结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无法下载cuda

cuda下载不了 一、台式机电脑浏览器打不开cuda下载下面二、解决办法 一、台式机电脑浏览器打不开cuda下载下面 用360、chrome、Edge浏览器都打不开下载页面&#xff0c;有的人说后缀com改成cn&#xff0c;都不行。知乎上说是网络问题&#xff0c;电信换成换成移动/联通的网络会…

文心一言最常用的20条指令及指令说明,含增强指令

下面是20条文心一言的指令及其说明&#xff0c;每条指令尽量简洁明了&#xff0c;以便在有限的字数内提供尽可能多的信息。以下是这些指令及其说明&#xff1a; 1. 查询天气 指令&#xff1a;今天北京的天气怎么样&#xff1f;说明&#xff1a;此指令用于查询特定城市&#xf…

Python结合MobileNetV2:图像识别分类系统实战

一、目录 算法模型介绍模型使用训练模型评估项目扩展 二、算法模型介绍 图像识别是计算机视觉领域的重要研究方向&#xff0c;它在人脸识别、物体检测、图像分类等领域有着广泛的应用。随着移动设备的普及和计算资源的限制&#xff0c;设计高效的图像识别算法变得尤为重要。…

数据结构基础--------【二叉树基础】

二叉树基础 二叉树是一种常见的数据结构&#xff0c;由节点组成&#xff0c;每个节点最多有两个子节点&#xff0c;左子节点和右子节点。二叉树可以用来表示许多实际问题&#xff0c;如计算机程序中的表达式、组织结构等。以下是一些二叉树的概念&#xff1a; 二叉树的深度&a…

高考选专业,兴趣与就业前景该如何平衡?

从高考结束的那一刻开始&#xff0c;有些家长和学生就已经变得焦虑了&#xff0c;因为他们不知道成绩出来的时候学生应该如何填报志愿&#xff0c;也不知道选择什么样的专业&#xff0c;毕竟大学里面的专业丰富多彩&#xff0c;如何选择确实是一门学问&#xff0c;而对于学生们…

Zynq7000系列FPGA中DMA引擎编程指南

DMA引擎的编程指南通常涉及一系列步骤和API调用&#xff0c;以确保数据在内存之间的高效传输&#xff0c;而无需CPU的直接干预。 DMA引擎的编程指南包括以下部分&#xff1a; 一、编写微代码为AXI事务编写CCRx程序 通道微码用于设置dmac.CCRx寄存器以定义AXI事务的属性。这是…

Node.js-path 模块

path 模块 path 模块提供了 操作路径 的功能&#xff0c;如下是几个较为常用的几个 API&#xff1a; 代码实例&#xff1a; const path require(path);//获取路径分隔符 console.log(path.sep);//拼接绝对路径 console.log(path.resolve(__dirname, test));//解析路径 let pa…

java反射介绍

Java反射API允许你在运行时检查和修改程序的行为。这意味着你可以动态地创建对象、查看类的字段、方法和构造函数&#xff0c;甚至调用它们。这是一个强大的特性&#xff0c;但也应该谨慎使用&#xff0c;因为它可以破坏封装性。 以下是使用Java反射的一些常见用途&#xff1a;…

041基于SSM+Jsp的高校校园点餐系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

OPENCV(图像入门笔记)

使用OpenCV读取图像 使用cv.imread()函数读取图像。 第一个参数为图像名称 第二个参数是一个标志&#xff0c;它指定了读取图像的方式。分别有三种 cv.IMREAD_COLOR&#xff1a; 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。 cv.IMREAD_GRAYSCALE&#xff1a;以…

什么是 HTTP POST 请求?初学者指南与示范

在现代网络开发领域&#xff0c;理解并应用 HTTP 请求 方法是基本的要求&#xff0c;其中 "POST" 方法扮演着关键角色。 理解 POST 方法 POST 方法属于 HTTP 协议的一部分&#xff0c;主旨在于向服务器发送数据以执行资源的创建或更新。它与 GET 方法区分开来&…

Linux:Ubuntu18.04下开机自启动QT图形化界面

Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面 Chapter1 Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面一、创建rc.local文件二、建立rc-local.service文件三、启动服务查看启动状态四、重启 Chapter2 将QT应用作为开机自启动&#xff08;Linux系统&#xff…

预约停车位app小程序模板

简单的手机预约停车位&#xff0c;在线停车位&#xff0c;预约停车管理小程序页面模板。包含&#xff1a;主页、预约停车、预约管理、地图导航等。 预约停车位app小程序模板

bash条件判断基础adsawq1`1nn

判断的作用 判断后续操作的提前条件是否满足如果满足执行一种命令不满足则执行另一种指令 条件测试类型&#xff1a; 整型测试字符测试文字测试 整数测试&#xff1a;比较两个整数谁大谁小&#xff0c;是否相等&#xff1b; 二元测试&#xff1a; num1 操作符 num2 -eq: 等于…

Flink,spark对比

三&#xff1a;az 如何调度Spark、Flink&#xff0c;MR 任务 首先&#xff0c;使用java编写一个spark任务&#xff0c;定义一个类&#xff0c;它有main方法&#xff0c;里面写好逻辑&#xff0c;sparkConf 和JavaSparkContext 获取上下文&#xff0c;然后打成一个jar包&#xf…

基于机器学习(霍特林统计量,高斯混合模型,支持向量机)的工业数据异常检测(MATLAB R2021B)

近年来&#xff0c;隨着集散控制系统、工业物联网、智能仪表等信息技术在现代工业生产系统中的应用&#xff0c;生产过程的运行状态能够以大量数据的形式被感知和记录。基于数据的故障诊断方法以过程数据为基础&#xff0c;采用统计分析、统计学习、信号处理等方法&#xff0c;…

笔记:SpringBoot+Vue全栈开发2

笔记&#xff1a;SpringBootVue全栈开发2 1. MVVM模式2. Vue组件化开发3. 第三方组件element-ui的使用4. axios网络请求5. 前端路由VueRouter 1. MVVM模式 MVVM是Model-View-ViewModel的缩写&#xff0c;是一种基于前端开发的架构模式&#xff0c;其核心是提供对View和ViewMod…

【简单介绍下Memcached】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

独立开发者系列(21)——HTTP协议的使用

作为网络访问的必备知识点&#xff0c;http协议&#xff0c;我们已经知道http协议属于tcp的一种&#xff0c;而且一般是用于网络通讯的&#xff0c;但是本身http协议本身包含的内容也很多&#xff0c;正是因为有这种协议&#xff0c;前后端和各种硬件接口/服务器接口/前端&…

VSCode远程服务器如何上传下载文件(超方便!)

方法一&#xff1a; 1、在VSCode应用商店安装SFTP插件 2、然后就可以直接把文件拖进VSCode即可&#xff0c;如下图所示&#xff1a; 这里的目录是我远程服务器上的目录&#xff0c;可以直接将要上传的文件直接拖进需要的文件夹 3、如果要从远程服务器上下载文件到本地&#x…