QT--emit

本文介绍了如何在Qt中使用`emit`信号和槽函数`myslot`进行窗口间的通信。通过在子窗口的按钮点击事件中发射`mysignal`,并连接到主窗口的槽函数,实现了从子窗口到主窗口的数据传递,最终在主窗口的槽函数中打印出相关信息。这种方法展示了Qt中基本的信号与槽机制的应用。
摘要由CSDN通过智能技术生成

本文为学习记录,若有错误,请联系作者,谦虚受教。


前言

“要努力,但是不要急。繁花锦簇,硕果累累都需要过程 。”


一、emit

emit是不同窗口/类间的触发信号。
当对象改变其状态时,信号就由该对象发射 (emit) 出去,通过槽函数实现用户想要的效果。

二、相关代码

例如想要通过子窗口childwindow的按钮,对主窗口的mainwindow操作,实现用户想要的效果。
首先要明白谁是发射端,谁是接收端。
按照上面的例子来说,发射端就是子窗口,接收端是主窗口。
QObject::connect: (sender name: ‘childwindow’)
QObject::connect: (receiver name: ‘MainWindow’)

1…h文件

子窗口的.h文件(发射端)


class childwindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit childwindow(QWidget *parent = nullptr);
    ~childwindow();

signals:
    void mysignal();//信号

private slots:
    void on_btn_sure_clicked(); //槽函数

private:
    Ui::childwindow *ui;
};

主窗口的.h文件(接收端)

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
protected:

private slots:
    void myslot();//槽函数,实现用户效果的

private:
    Ui::MainWindow *ui;
};

2…cpp文件

子窗口的.cpp文件(发射端)

//按下按钮btn_sure,发射mysignal信号,触发主窗口中的myslot槽函数
void childwindow::on_btn_sure_clicked()
{
    //emit信号的发射
    MainWindow *app2=new MainWindow;
    connect(this,SIGNAL(mysignal()),app2,SLOT(myslot()));
    emit mysignal();
}

主窗口的.cpp文件(接收端)

//emit
void MainWindow::myslot()
{
    qDebug()<<"MY emit is beauty girl "<<endl;
}

运行的效果是控制台打印出:MY emit is beauty girl。

注意:myslot()中是实现用户效果的函数,可自定义。

一、此例子是最简单的方法,子窗口可以使用不同的方式来触发信号,也可以用不同的方式来连接主窗口的槽函数
二、在主窗口中也可以使用不同的方式去响应这个信号。

总结

善于总结,多进一步。

  • 35
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值