qt中自定义信号和槽函数,信号重载

23 篇文章 0 订阅
12 篇文章 0 订阅

关于自定义信号和槽函数,是qt中最常用的。信号只需在头文件中进行声明,没有返回值,可以带参数,需要signals开头。在connect连接时,最好使用qt5函数指针的方法,在访问类中的成员函数时前面要加对应类的作用域:类名::

头文件中:

signals:
    void mysig();
    void mysig(int ,QString);//这里对信号进行重载,声明了一个不带参数,还有带参数的。
private slots:
    void myslot1();
    void myslot2(int ,QString);

源文件中:

    //这是qt4的写法,通过SIGNAL和SLOT宏进行连接,使用这两个宏只是做了字符串替换,不做语法检查。虽然写法简单,但是不建议使用。
    //connect(this,SIGNAL(mysig()),this,SLOT(myslot1()));
    //connect(this,SIGNAL(mysig(int,QString)),this,SLOT(myslot2(int,QString)));
    //这是qt5的写法,通过声明函数指针,来把它指向信号或者槽函数。注意:在QT中获得类的成员函数的指针的时候需要限制作用域才行,前面加MainWindow::
    void (MainWindow::*mysigfun1)()=&MainWindow::mysig;
    void (MainWindow::*mysigfun2)(int,QString)=&MainWindow::mysig;
    void (MainWindow::*myslotfun1)()=&MainWindow::myslot1;
    void (MainWindow::*myslotfun2)(int,QString)=&MainWindow::myslot2;
    connect(this,mysigfun1,this,myslotfun1);
    connect(this,mysigfun2,this,myslotfun2);

然后在需要触发的时候,调用emit关键字发送信号:

    emit mysig();
    emit mysig(250,"哈哈");
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值