QT--emit

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

文章目录

  • 前言
  • 一、emit
  • 二、相关代码
    • 1..h文件
    • 2..cpp文件
  • 总结


前言

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


一、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;
    emit mysignal();
    connect(this,SIGNAL(mysignal()),app2,SLOT(myslot()));
}

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

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

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

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

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

总结

善于总结,多进一步。

你可能感兴趣的:(QT,qt,开发语言)