Qt自定义信号

本文详细介绍了如何在Qt中使用自定义信号与槽进行对象间通信,包括声明信号、发送信号及处理自定义类型的方法。通过实例演示了元数据类型的注册和使用,是理解和运用Qt信号槽机制的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT

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”);

 https://www.ebaina.com/articles/140000004853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值