当前位置: 首页 > 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存放到主页面的类对象中,在主页面的转换中通过多长调用即可,不需要关闭后生成一个框,然后再关闭再生成,这样会导致自愿的浪费
并且通过信号与函数的连接,可以让代码更简洁

相关文章:

  • Vue 中 MVVM、MVC 和 MVP 模式的区别
  • Linux中挂载是什么意思?
  • 网络安全要学python 网络安全要学爬虫吗
  • 【数据分析】1 认识数据分析
  • 【Java进阶篇】——第11篇:Java 8 新特性及使用
  • Go入门之map
  • 在unity中实现隐藏窗口,显示系统托盘图标,右键菜单退出功能
  • springMvc
  • Ai模型-PyTorch和Tensorflow的区别
  • 【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?
  • 09Elasticsearch02
  • SQL数据处理函数全解析
  • 使用Python脚本下载王者**游戏英雄皮肤原画图片(含源码)
  • JavaScript表单介绍
  • 发现一个挺好的项目,可以在springboot项目中快速接入DeepSeek API,有需要的可以尝试一下
  • 从0到1:STM32温控系统开发踩坑指南
  • http 响应码影响 video 标签播放视频
  • 关于JavaScript中的事件
  • 【Linux-命令】
  • Unity 开发资源汇总 | 插件 | 模型 | 源码(不断更新中,建议收藏)
  • 百亿基金经理调仓路径曝光,张坤、陈皓、胡昕炜又有新动作
  • 世界哮喘日|专家:哮喘无法根治,“临床治愈”已成治疗新目标
  • 中东睿评|胡塞武装已成为楔入中东各方力量之间的钉子户
  • 许昌市场监管部门对胖东来玉石开展日常检查:平均毛利率不超20%
  • 厦大历史系教授林汀水辞世,曾参编《中国历史地图集》
  • 蓝佛安主持东盟与中日韩财长和央行行长系列会议并举行多场双边会见