qt界面之间传递数据

前言,最近在做qt项目,登录成功后,在新的界面中展示”账号,欢迎你登录!",因此需要进行传递参数,根据本人写的调试成功的写一个随笔,直接把测试代码贴出来,展示!

 代码展示

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLineEdit>

#include "form.h"

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    //发送数据的信号,不需要实体函数,在头文件定义就可以
    void sendData(QString);
private:
    QPushButton *Btn;
    Form *f;
    QLineEdit *qle;
private slots:
    void clicked_button();
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("widget发送界面!");
    this->setFixedSize(800,600);
    Btn = new QPushButton(this);
    Btn->setGeometry(300,200,100, 50);
    qle = new QLineEdit(this);
    qle->setGeometry(120,20,200,40);
    Btn->setText("发送");

    f = new Form();
    connect(Btn,SIGNAL(clicked()),this,SLOT(clicked_button()));
    //这里是连接信号和槽函数的重点
    connect(this,SIGNAL(sendData(QString)),f,SLOT(getData(QString)));
}

Widget::~Widget()
{
}

void Widget::clicked_button()
{
    f->show();
    QString strss = qle->text();
    emit sendData(strss);//发送数据,使用emit
}

form.h

#ifndef FORM_H
#define FORM_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QDebug>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT
public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();
private:
    QLineEdit *qle1;
private slots:
    //得到数据的槽函数
    void getData(QString);
};

#endif // FORM_H

form.cpp

#include "form.h"
//#include "ui_form.h"
//#include "widget.h"

Form::Form(QWidget *parent) :
    QWidget(parent)
{
    this->setWindowTitle("form接收界面!");
    this->setFixedSize(600,300);
    qle1 = new QLineEdit(this);
    qle1->setGeometry(120,20,200,40);

}

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

void Form::getData(QString str)
{
    qle1->setText(str);
}

main.cpp

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

结果展示:

 运行展示widget界面,点击发送就可以跳转到form界面,并且成功传递参数。

 

 总结一下:

在widget.h声明一个发送信号,

signals:   
 void sendData(QString);//发送数据的信号,不需要实体函数,在头文件定义就可以    

然后定义槽函数

private slots:    
void clicked_button();//定义的槽函数

在widget.cpp中,实现槽函数

void clicked_button()

{

        //函数实现...

    emit sendData(strss);//发送数据,使用emit
}

在widget.cpp合适位置设置connect函数实现,绑定,测试是在构造函数中使用

    //连接信号和槽函数的重点,f是指定页面的一个指针           connect(this,SIGNAL(sendData(QString)),f,SLOT(getData(QString)));

在form.h中定义,接收槽函数

private slots:    
 void getData(QString);//得到数据的槽函数  

在form.cpp中实现

void Form::getData(QString str)
{ 
   //实现代码
}
  • 13
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值