编写自定义Qt类型

本文详细介绍了如何编写自定义的Qt类型,使其能够存储在QVariant中并用于信号-槽系统。步骤包括创建满足QMetaType要求的类型,使用Q_DECLARE_METATYPE()宏声明类型,以及通过qRegisterMetaType()注册类型以实现跨线程传递。
摘要由CSDN通过智能技术生成

编写自定义Qt类型

本文主要介绍如何编写类似QSize,QColor,QString等等可存储于QVariant对象,并且可用于信号-槽系统的数据类型

创建自定义类型:

首先,我们要保证自定义类型满足所有QMetaType的需要,也即:

  • 一个公共的默认构造函数
  • 一个公共的拷贝构造函数
  • 一个公共的析构函数

下面举个例子:

  class Message
  {
  public:
      Message();
      Message(const Message &other);
      ~Message();

      Message(const QString &body, const QStringList &headers);

      QString body() const;
      QStringList headers() const;

  private:
      QString m_body;
      QStringList m_headers;
  };

声明自定义类型

为了能在QVariant中存储自定义类型,我们还需要在类型的头文件中使用Q_DECLARE_METATYPE()宏来声明它

Q_DECLARE_METATYPE(Message);

这样我们就可以在QVariant中存取Message对象,并且可以在直连槽(Qt::DirectConnection)中作为参数传递对象了

注册自定义类型

在声明后,我们可以在单线程中使用信号-槽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值