
QT5.9界面(窗口)之间传递参数
原理: 窗口(A):张三 信号(signal):想要买烟 连接方式(connect):走路去 结果(void):张三得到烟
发布日期:2021-05-12 18:45:24
浏览次数:19
分类:精选文章
本文共 2522 字,大约阅读时间需要 8 分钟。
通过emit发送数据传递参数的方法:
效果图:
窗口(B):商店
槽函数(slots):商店给张三烟能看完的才能学到点东西。
如上所述:QT采用信号与槽函数实现不同窗口之间的参数传递,下面上代码示例:dialog.h 文件
#ifndef DIALOG_H#define DIALOG_H#includenamespace Ui { class Dialog;}class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = nullptr); ~Dialog();signals: void sendData(QString);//发送数据的信号private slots: void on_pushButton_clicked(); void getData(QString);//得到数据的槽函数private: Ui::Dialog *ui;};#endif // DIALOG_H
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include#include "dialog.h"namespace Ui { class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private slots: void on_toolButton_clicked(); void getData(QString);signals: void sendData(QString);//发送数据的信号,不需要实体函数,在头文件定义就可以private: Ui::MainWindow *ui; Dialog *gui2 = new Dialog();//初始化dialog窗口,实例化对象,可以在mainwindow中调用dialog的函数};#endif // MAINWINDOW_H
#include "dialog.h"#include "mainwindow.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this);}Dialog::~Dialog(){ delete ui;}void Dialog::on_pushButton_clicked(){ QString str2 = ui->lineEdit_senddata->text(); emit sendData(str2); }void Dialog::getData(QString str1){ ui->lineEdit_getdata->setText(str1);}
#include "mainwindow.h"#include "dialog.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); connect(gui2,SIGNAL(sendData(QString)),this,SLOT(getData(QString))); connect(this,SIGNAL(sendData(QString)),gui2,SLOT(getData(QString)));}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_toolButton_clicked(){ gui2->show(); QString strss = ui->lineEdit_2->text(); emit sendData(strss);//发送数据,使用emit}void MainWindow::getData(QString str2){ // ui->lineEdit->text(); ui->lineEdit->setText(str2);}
#include "mainwindow.h"#include "dialog.h"#includeint main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); // Dialog gui2; // gui2.hide(); return a.exec();}
connect(窗口A,窗口A的信号,窗口B,窗口B的槽函数)
分析下面这句话: connect(this,SIGNAL(sendData(QString)),_interface,SLOT(getData(QString))); 连接这个窗口和gui2窗口,从这个窗口的sendData发送数据,gui2窗口的getData接收数据,信号和槽都是函数,只不过信号函数只需要在头文件里定义,不需要在源文件中实现函数体,而槽函数在头文件中定义之后还需要在原文件中实现函数的定义。发表评论
最新留言
感谢大佬
[***.8.128.20]2025年05月07日 19时58分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux学习总结(5)——CentOS常用的目录文件操作命令
2023-02-03
Linux学习总结(62)——什么是堡垒机?为什么需要堡垒机?
2023-02-03
Linux学习总结(65)——Linux 服务器安全强化的七个步骤
2023-02-03
Linux学习总结(66)——CentOS7操作系统SSH安全加固
2023-02-03
Linux学习总结(69)——Linux 生成随机数的6种方法
2023-02-03
Linux学习总结(78)—— 常见开源协议讲解
2023-02-03
Linux学习笔记001---Windows下安装CentOS7_并且安装桌面UI
2023-02-03
linux学习笔记(打包压缩工具)
2023-02-04
Linux安装Anaconda3过程详解
2023-02-04
linux安装composer及安装yii2
2023-02-04
Linux安装gcc/gcc-c++
2023-02-04
Linux安装JDK 17
2023-02-04
Linux安装JMeter进行压力测试
2023-02-04
Linux安装KVM
2023-02-04
Linux安装Mysql5.7.23详细教程(CentOS7)
2023-02-04
Linux安装mysql:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql
2023-02-04
Linux安装Oracle 11g和postgrepSQL数据库(附安装包)
2023-02-04