概述
通过emit发送数据传递参数的方法:
效果图:
原理:
窗口(A):张三
信号(signal):想要买烟
连接方式(connect):走路去
结果(void):张三得到烟
窗口(B):商店
槽函数(slots):商店给张三烟
能看完的才能学到点东西。
如上所述:QT采用信号与槽函数实现不同窗口之间的参数传递,下面上代码示例:
dialog.h 文件
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
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 <QMainWindow>
#include "dialog.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
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 <QApplication>
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接收数据,信号和槽都是函数,只不过信号函数只需要在头文件里定义,不需要在源文件中实现函数体,而槽函数在头文件中定义之后还需要在原文件中实现函数的定义。
最后
以上就是飞快小懒虫为你收集整理的QT5.9界面(窗口)之间传递参数的全部内容,希望文章能够帮你解决QT5.9界面(窗口)之间传递参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复