Qt使用信号和槽实现窗体间的传值

思路:创建两个窗体:dialog、widget。实现dialog 发送信息给widget窗体。

在dailog类中定义一个signals: void sendData(QString);

在widget中定义一个private slots:void receiveData(QString data);

在widget窗体中实例化一个dialog的对象,显示dialog窗体,并连接信号和槽。主函数中显示widget的窗体

测试代码::将通过点击dialog按钮实现dialog的lineEdit的文字信息在widget中的lineEdit显示
signal_slot.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-03-21T14:49:53
#
#-------------------------------------------------

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = slot_signal
TEMPLATE = app
SOURCES += main.cpp\
        dialog.cpp \
    form.cpp
HEADERS  += dialog.h \
    form.h
FORMS    += dialog.ui \
    form.ui

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 = 0);
    ~Dialog();

private slots:
    void on_pushButton_clicked();
signals:
    void sendData(QString);   //用来传递数据的信号

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

form.h

#ifndef FORM_H
#define FORM_H

#include <QWidget>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT

public:
    explicit Form(QWidget *parent = 0);
    ~Form();

private slots:
    void receiveData(QString data);   //接收传递过来的数据的槽

private:
    Ui::Form *ui;
};

#endif // FORM_H

dialog.cpp

#include "dialog.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()
{
    sendData(ui->lineEdit->text());
}

form.cpp

#include "form.h"
#include "ui_form.h"
#include "dialog.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);


    Dialog *dlg = new Dialog;
    dlg->show();
    //关联信号和槽函数
    connect(dlg, SIGNAL(sendData(QString)), this, SLOT(receiveData(QString)));
}

Form::~Form()
{
    delete ui;
}

void Form::receiveData(QString data)
{
    ui->lineEdit->setText(data);
}

main.cpp

#include "form.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Form f;
    f.show();

    return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值