QT5.9界面(窗口)之间传递参数
发布日期:2021-05-12 18:45:24 浏览次数:19 分类:精选文章

本文共 2522 字,大约阅读时间需要 8 分钟。

通过emit发送数据传递参数的方法:

效果图:
在这里插入图片描述
原理:
窗口(A):张三
信号(signal):想要买烟
连接方式(connect):走路去
结果(void):张三得到烟

窗口(B):商店

槽函数(slots):商店给张三烟

能看完的才能学到点东西。

如上所述:QT采用信号与槽函数实现不同窗口之间的参数传递,下面上代码示例:

dialog.h 文件

#ifndef DIALOG_H#define DIALOG_H#include 
namespace 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"#include 
int 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接收数据,信号和槽都是函数,只不过信号函数只需要在头文件里定义,不需要在源文件中实现函数体,而槽函数在头文件中定义之后还需要在原文件中实现函数的定义。

上一篇:【Git】报错:“fatal: Could not read from remote repository”
下一篇:QT之多界面传递数据

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年05月07日 19时58分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章