栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT--emit

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 "< 

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

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

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

总结

善于总结,多进一步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号