当前位置: 首页 > news >正文

合肥搭建网站最近一周的热点新闻

合肥搭建网站,最近一周的热点新闻,中国互联网巨头排名,网站排名必做阶段性seo策略qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType code review! 文章目录 qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType一.Q_DECLARE_METATYPE使用方法应用场景 二.为什么需要注册类型?三.使用 Q_DECLARE_METATYPE 处理自定义类型的简短示例3.1.自定义类型定…

qt-C++笔记之Q_DECLARE_METATYPE和qRegisterMetaType

code review!

在这里插入图片描述

文章目录

  • qt-C++笔记之Q_DECLARE_METATYPE和qRegisterMetaType
    • 一.Q_DECLARE_METATYPE
      • 使用方法
      • 应用场景
    • 二.为什么需要注册类型?
    • 三.使用 Q_DECLARE_METATYPE 处理自定义类型的简短示例
      • 3.1.自定义类型定义
      • 3.2.在 QVariant 中存储和检索
      • 3.3.在信号和槽中传递

一.Q_DECLARE_METATYPE

Q_DECLARE_METATYPE 是一个 Qt 宏,用于注册某种类型以便在 Qt 的元对象系统中使用。注册后的类型可以在 Qt 的信号和槽机制中使用,特别是当类型作为信号参数传递时。这对于非Qt内建类型来说尤其重要,因为 Qt 的元对象系统需要额外的信息来处理这些类型。

使用方法

  1. 声明自定义类型:

    首先需要创建一个自定义类型。例如:

    class MyCustomType {
    public:int someValue;
    };
    
  2. 使用 Q_DECLARE_METATYPE

    在全局命名空间中使用这个宏来声明自定义类型:

    Q_DECLARE_METATYPE(MyCustomType)
    
  3. 注册类型:

    为了使 QVariant 能够处理这个自定义类型,还需要在程序的某个地方注册它:

    qRegisterMetaType<MyCustomType>("MyCustomType");
    

应用场景

  • 信号和槽: 如果想在信号和槽中传递这个类型的对象,需要注册。
  • QVariant: 如果想将自定义类型存储在 QVariant 中。

这样,就可以在 Qt 的各种机制中使用自定义类型了。

二.为什么需要注册类型?

Qt 的信号和槽机制以及变量属性系统依赖于运行时类型信息来动态地进行类型检查和转换。注册类型允许 Qt 知道如何在不同组件间安全地传递这些类型的数据,特别是在不同线程之间。比如,如果想在信号中传递一个自定义数据结构或者 STL 容器,就必须先使用 Q_DECLARE_METATYPE 进行注册。

三.使用 Q_DECLARE_METATYPE 处理自定义类型的简短示例

3.1.自定义类型定义

首先定义一个简单的自定义类型:

// customtype.h
#ifndef CUSTOMTYPE_H
#define CUSTOMTYPE_H#include <QString>class CustomType {
public:CustomType() : name("Default") {}CustomType(const QString &name) : name(name) {}QString getName() const { return name; }void setName(const QString &name) { this->name = name; }private:QString name;
};Q_DECLARE_METATYPE(CustomType)#endif // CUSTOMTYPE_H

3.2.在 QVariant 中存储和检索

接下来,演示如何将自定义类型存储到 QVariant 中,并从中检索。

// main.cpp
#include <QCoreApplication>
#include <QVariant>
#include <QDebug>
#include "customtype.h"int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);// 注册类型qRegisterMetaType<CustomType>("CustomType");// 创建一个自定义类型实例CustomType original("Example");// 存储在 QVariant 中QVariant variant = QVariant::fromValue(original);// 从 QVariant 中检索if (variant.canConvert<CustomType>()) {CustomType retrieved = variant.value<CustomType>();qDebug() << "Retrieved name:" << retrieved.getName();}return 0;
}

3.3.在信号和槽中传递

最后,展示如何在信号和槽中传递自定义类型。

// sender.h
#ifndef SENDER_H
#define SENDER_H#include <QObject>
#include "customtype.h"class Sender : public QObject {Q_OBJECTpublic:void send() {CustomType data("Signal Data");emit customSignal(data);}signals:void customSignal(CustomType data);
};#endif // SENDER_H// receiver.h
#ifndef RECEIVER_H
#define RECEIVER_H#include <QObject>
#include <QDebug>
#include "customtype.h"class Receiver : public QObject {Q_OBJECTpublic slots:void onCustomSignal(CustomType data) {qDebug() << "Received name:" << data.getName();}
};#endif // RECEIVER_H
// main.cpp
#include <QCoreApplication>
#include "sender.h"
#include "receiver.h"int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);qRegisterMetaType<CustomType>("CustomType");Sender sender;Receiver receiver;QObject::connect(&sender, &Sender::customSignal, &receiver, &Receiver::onCustomSignal);sender.send();return app.exec();
}
http://www.hkea.cn/news/619858/

相关文章:

  • 营销型网站怎么做智能建站abc
  • 捷信做单官方网站网络服务主要包括什么
  • 网站建设的方案费用什么时候网络推广
  • 这么做3d展示网站公司百度官网优化
  • 工业设计软件上市公司搜索引擎优化的方法
  • 网站建设公司创意网站网络推广推广
  • 浙江三建建设集团有限公司网站关键词的作用
  • 网站建设官方网站教育培训机构加盟十大排名
  • 万网上传网站seo免费
  • 孝感做网站公司百度热议排名软件
  • 建设网站费用吗廊坊seo快速排名
  • 网站建设公司怎样拓展网站业务大连网站推广
  • 什么网站可以免费做找客户东莞seo建站推广费用
  • 合肥微信网站建设购物网站如何推广
  • 网站建设课程简介图片百度官网认证免费
  • 月夜影视在线观看免费完整版韩剧关键词排名优化报价
  • 做网站的工作时间兰州seo公司
  • css怎么嵌入到html直通车关键词优化口诀
  • 虚拟网站php专业型seo网站关键词排名提升
  • 找人合伙做网站平台b2b电商平台
  • 手机网站建设技术方案找网站设计公司
  • 杭州如何设计公司网站惠州seo网站推广
  • 成都网站建设门户大连企业网站建站模板
  • 游戏卡充值可以做网站吗百度竞价关键词出价技巧
  • 建设企业网站就等于开展网络营销网店推广实训报告
  • dede无法更新网站主页到百度联盟注册
  • wordpress支持爱奇艺企业网站seo托管怎么做
  • 永川做网站的武汉百度快速排名提升
  • 做网站的故意给中病毒网络营销广告
  • 关于阅读类网站的建设规划书友情链接系统