当前位置: 首页 > news >正文

QT--对话框的切换

文章目录

  • 前言
  • 一、主窗口ui
  • 二、创建子窗口
  • 三、步骤
    • 1.主界面------>子页面
    • 2.子界面------>主页面
  • 四、总结


前言

之前我们学了qt中最重要的东西–信号和槽
我们现在实现这样一个demo,程序启动后弹出主界面,点击主界面的按钮弹出子窗口,隐藏主界面,点击子窗口界面的按钮,隐藏子界面,显示主窗口。
当我们需要一个界面通知另一个界面时,可以采用信号和槽机制。通过链接信号和槽,当一个界面发送信号时,链接该信号的槽会被响应,从而达到消息传递的目的。

一、主窗口ui

在这里插入图片描述

二、创建子窗口

我们右击项目弹出菜单选择创建Qt设计师界面类,选择Dialog without Buttons
在这里插入图片描述
然后创建子窗口ui
在这里插入图片描述

三、步骤

1.主界面------>子页面

我们给主页面这个pushbutton加个信号和槽函数
下方代码在mainwindow.h中 加入信号

private slots:void on_pushButton_clicked();

我们这个子页面我们将其指针对象写入mainwindow.h的类对象中,这样在mainwindow.cpp的构造函数中,直接初始化即可
下方代码在mainwindow.h中

public:MainWindow(QWidget *parent = nullptr);~MainWindow();childDialog * _childdialog;

下方代码在mainwindow中初始化类对象并且connect连接信号与槽


MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);_childdialog=new childDialog(this);connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::on_pushButton_clicked);
}

下方代码在mainwindow.cpp中实现这个槽函数on_pushButton_clicked()

this->hide();_childdialog->show();

现在完成了主页面向子页面的转换!!!!

2.子界面------>主页面

我们给子页面这个pushbutton加个信号和槽函数

public slots:void on_pushButton_clicked1();

下方代码在childdialog.cpp中实现这个槽函数on_pushButton_clicked1()

void childDialog::on_pushButton_clicked1()
{this->hide();emit returnmain();
}

这个emit是释放信号的意思,我们这里通过触发这个槽函数,然后子页面直接隐藏,然后释放这个returnmain的信号,我们在主页面的中写一个connect连接这个信号触发一个主页面的show即可
下方代码是子页面的信号与槽的连接

connect(ui->pushButton,&QPushButton::clicked,this,&childDialog::on_pushButton_clicked1);

下方代码是returnmain信号与主页面函数的连接与实现

 connect(_childdialog,&childDialog::returnmain,this,&MainWindow::returnMainWindow);void MainWindow::returnMainWindow()
{this->show();
}

四、总结

我们在创建子页面的时候是通过childdialog生成的一个指针对象_childialog存放到主页面的类对象中,在主页面的转换中通过多长调用即可,不需要关闭后生成一个框,然后再关闭再生成,这样会导致自愿的浪费
并且通过信号与函数的连接,可以让代码更简洁

http://www.lryc.cn/news/538996.html

相关文章:

  • 深入浅出:CUDA是什么,如何利用它进行高效并行计算
  • Zotero PDF Translate插件配置百度翻译api
  • 利用acme.sh 申请 Google 免费证书
  • 腾讯云cloudstudio使用笔记(一)
  • python自动化制作常规的日报数据可视化
  • C语言:在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主函数输出这10个已排好序的字符串。
  • 构建高效智能对话前端:基于Ant Design X 的deepseek对话应用
  • SQLMesh 系列教程5- 详解SQL模型
  • 本地DeepSeek模型GGUF文件转换为PyTorch格式
  • Flutter:动态表单(在不确定字段的情况下,生成动态表单)
  • 【Python项目】文本相似度计算系统
  • C# ref 和 out 的使用详解
  • Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库
  • 用 WOW.js 和 animate.css 实现动画效果
  • 1-知识图谱-概述和介绍
  • flink jobgraph详细介绍
  • 使用nginx+rtmp+ffmpeg实现桌面直播
  • 每日一题——将数字字符串转化为IP地址
  • 机器学习数学基础:25.随机变量分布详解
  • 香港电讯与Zenlayer达成战略合作,拓展全球互联生态圈
  • MySQL-事务隔离级别
  • 【Python学习 / 6】面向对象编程(OOP)
  • Ollama DeepSeek + AnythingLLM 实现本地私有AI知识库
  • 个人博客测试报告
  • 嵌入式八股文(四)计算机网络篇
  • 基于Electron+Vue3创建桌面应用
  • 建立稳定分析模式的模式语言01
  • 【C++游戏开发-五子棋】
  • ubuntu20动态修改ip,springboot中yaml的内容的读取,修改,写入
  • tailwindcss学习02