我是靠谱客的博主 飞快小懒虫,最近开发中收集的这篇文章主要介绍QT5.9界面(窗口)之间传递参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过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界面(窗口)之间传递参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部