Loading...
首页专栏正文

Qt自定义信号

 
1人已赏
小王子🤴 发布于 2020-11-19 17:26:24 浏览 9961 点赞 4232 收藏 455

Qt自定义信号

Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法。作为一种通用的处理机制,信号与反应槽非常灵活,可以携带任意数量的参数,参数的类型也由用户自定。同时其本身也是类型安全的,任何一个从QObject或其子类继承的用户类都可以使用信号与反应槽。 Qt类中想要实现发送信号必须继承QObject类,同时类中需要添加Q_OBJECT宏:

class test: public QObject
{
    Q_OBJECT
public:
    test();
    ~test();
}

声明信号函数,信号函数不需要实现:

class test: public QObject
{
    Q_OBJECT
public:
    test();
~test();
signals:
    void signal(QString);
}

发送信号,使用emit 发送信号:

void send()
{
  emit signal(“send signal”);
}

对于自定义类型,通过singal和slot传递时,必须使用qRegisterMetaType("xx")注册为元数据类型: 例:

struct struct1{
int x;
double d;
}
qRegisterMetaType<struct1>(“struct1”);

*本文仅代表作者观点,不代表易百纳技术社区立场。系作者授权易百纳技术社区发表,未经许可不得转载。

精彩评论

内容存在敏感词
打赏
打赏作者
小王子🤴
您的支持将鼓励我继续创作!
金额:
¥1 ¥5 ¥10 ¥50 ¥100
支付方式:
微信支付
支付宝支付
微信支付
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区