QT的qRegisterMetaType和qRegisterMetaType

2023-11-10

以下只为自己的问题做个记录
参考理解
qRegisterMetaType使用方法如下:
1、注册位置:在第一次使用此类链接跨线程的signal/slot之前,一般在当前类的构造函数中进行注册;
2、注册方法:在当前类的顶部包含:#include ,构造函数中加入代码:qRegisterMetaType(“Myclass”);
3、Myclass的引用类型需单独注册:qRegisterMetaType(“Myclass&”);

Q_DECLARE_METATYPE
1、这个宏用来注册一个类(含默认构造、默认析构、拷贝构造函数)为QMetaType类型 ,注册后的类型可以作为QVariant的自定义类型。
2、这个宏应该放在类或者结构体外面的下面,也可以放在一个非公用引用的头文件里,在每次使用QVariant的时候引用该头文件。
3、 想在信号队列、槽、 QObject’s property system中使用该类型,还得用qRegisterMetaType()注册该类型。

在查看一份代码中,多线程中使用了一个自定义类,自定义的一个类用Q_DECLARE_METATYPE进行了声明

Q_DECLARE_METATYPE(class*)

声明后在绑定该类的信号和槽之前使用qRegisterMetaType进行注册

qRegisterMetaType<qintptr>("qintptr");

因为该类是继承自QObject,然后在传递时该类指针又传递到其它地方使用,猜测其使用Q_DECLARE_METATYPE原因是因为后面使用到static_cast<class *>()进行转换,而使用qRegisterMetaType原因是因为该类的槽中包含qintptr,而qintptr可能不能直接在信号和槽中传递

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT的qRegisterMetaType和qRegisterMetaType 的相关文章

  • QGraphicsScene没有删除QWidget的功能

    QGraphicsScene 有一个addWidget QWidget 有函数 但是没有对应的removeWidget QWidget 它只有removeItem QGraphicsItem 如何删除 QWidget 这是一个基本示例 看看
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • 如何在qt中进行异步文件io?

    我想知道如何在qt中实现异步文件io 这在普通的 qt 中是否可以实现 或者有人需要使用另一个库 例如 libuv 来实现这样的事情 我正在查看 QDataStream 但即使它是一个 流 它也不是非阻塞的 我想一种解决方案是制作一个在内部
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 如何为 qmlRegisterSingletonType 实现单例提供程序?

    我想在 QML 中使用 C 类作为 Singleton 实例 并认为我必须使用 qmlRegisterSingletonType 注册它们 此函数需要一个提供已注册 C 类的实例的函数 我在 Windows 上使用最新的 Qt 5 3 1
  • Qml 和模糊图像

    我想使用 QML 实现模糊效果 我找到了有关 效果 模糊 的参考资料 例子 http qt gitorious org lscunha qt components lscunha qt components blobs d78feec567
  • 第一次信号发射后自动断开

    我正在从文件加载网页 然后替换其中的一些 html self template web page QtWebKit QWebPage self template web page mainFrame load QtCore QUrl tem
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • Qt 为什么使用 QString::number() 而不是 QLocale().toString()?

    我正在开发的应用程序将在许多国家推出 并且需要支持他们的语言 我一直在回顾我的代码并替换以下每个实例 QString number and QString toDouble with QLocale toString and QLocale
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某

随机推荐

  • GCC学习

    GCC的学习 图片来源于牛客项目课程 备注 1 默认Ubuntu 没有安装GCC 安装需要一定时间 2 gcc编译c文件 g 编译c 文件 3 ctrl l 清空命令行 gcc 介绍 优点 跨平台 支持 多软件平台和硬件平台 软件平台支持
  • KEIL编译器设置RAM数据复位后不被初始化数据

    第一种 编译器设置 这样设置RAM2 前提是你的RAM空间要有0x8200的大小 我只是举一个例子 在用at指定空间就可以了 比如 unsigned char APP MAC 6 attribute at 0x20008000 这样只要不带
  • 多线程编程之二——MFC中的多线程开发

    五 MFC对多线程编程的支持 MFC中有两类线程 分别称之为工作者线程和用户界面线程 二者的主要区别在于工作者线程没有消息循环 而用户界面线程有自己的消息队列和消息循环 工作者线程没有消息机制 通常用来执行后台计算和维护任务 如冗长的计算过
  • Leetcode详解JAVA版

    目录 1 两数之和 14 最长公共前缀 15 三数之和 18 四数之和 19 删除链表的倒数第 N 个结点 21 合并两个有序链表 28 找出字符串中第一个匹配项的下标 36 有效的数独 42 接雨水 43 字符串相乘 45 跳跃游戏 II
  • 五色球搭配

    要求 共有五种不同颜色的小球 每次取出三个不同颜色的小球 求出所有取球方案 include
  • 小明和小红学习都很努力,一直不相上下。这次期末考试,都发挥得不错,考出了自己的水平。请你判断下这次谁考的更好呢?

    题目描述 小明和小红学习都很努力 一直不相上下 这次期末考试 都发挥得不错 考出了自己的水平 请你判断下这次谁考的更好呢 输入 仅一行 两个不相等的整数 都大于等于0 且小于等于100 表示两人的成绩 输出 仅一行 一个整数 表示考得好的成
  • vscode 引用路径的别名设置

    问题描述 在开发过程中 由于模块越来越多 需要建立的文件夹就会越来越多 目录层级越来越深 这样就会导致import引用时极不方便 比如说 如果在开发过程中能够使用某别名来指代根目录或src文件夹 开发过程中引用的文件一般都在src下 达到下
  • Java开发工具IDEA常用配置(自动定位文件位置),助你事半功倍!提高效率

    自动定位到文件位置 IDEA配置自动定位文件位置 设置按钮 gt Always Select Opened File
  • Nacos安装教程(Windows版本、Linux版本、MAC本)

    目录标题 常用指令 启动 终止nacos 访问地址 一 Windows版Nacos安装教程 1 下载 2 访问 3 数据库设置 二 Linux版Nacos安装教程 1 单机模式 用于测试和单机试用 官方文档 下载 Linux上步骤 扩展 配
  • 黑马程序员Linux学习笔记

    1 Linux基础命令 1 1 Linux的目录结构 Linux只有一个顶级目录 称之为 根目录 Windows系统有多个顶级目录 即各个盘符 在Linux系统中 出现在开头的 表示 根目录 出现在后面的 表示 层次关系 1 2 Linux
  • 软件测试问题

    1 假定无法完全测试某一程序 在决定是否应该停止测试时要考虑哪些问题 2 启动Windows计算器程序 输入5 000 5 逗号不能少 观察结果 这是软件缺陷吗 为什么 3 假如测试飞行之类的模拟游戏 精度和准确度哪一个更值得测试 4 有没
  • softirq/tasklet/workqueue的区别

    http hi baidu com unicorndragon blog item 4f9e48ec8545853862d09fdc html 当前的2 6版内核中 有三种可能的选择 softirq tasklet和work queue t
  • selenium对浏览器操作、鼠标操作等总结

    1 控制浏览器 Selenium 主要提供的是操作页面上各种元素的方法 但它也提供了操作浏览器本身的方法 比如浏览器的大小以及浏览器后退 前进按钮等 1 1 控制浏览器窗口大小 在不同的浏览器大小下访问测试站点 对测试页面截图并保存 然后观
  • OPEN-VOCABULARY OBJECT DETECTION VIAVISION AND LANGUAGE KNOWLEDGE DISTILLATION

    通过视觉和语言知识提炼进行开放词汇的物体检测 摘要 我们的目标是推进开放词汇的物体检测 它可以检测由任意文本输入描述的物体 根本的挑战是训练数据的可用性 现有的物体检测数据集只包含数百个类别 而且进一步扩展成本很高 为了克服这一挑战 我们提
  • 线程池状态

    1 RUNNING 接受新的任务 处理等待队列中的任务 2 SHUTDOWN 不接受新的任务提交 但是会继续处理等待队列中的任务 调用线程池的shutdown 方法时 线程池由RUNNING gt SHUTDOWN 3 STOP 不接受新的
  • Ubuntu1604安装ganglia并监控Hadoop/HBase/Spark集群

    ganglia的官方文档没找到 试了很多教程 终于配置成功 不过还有一点小问题没有解决 安装依赖软件apache php rrdtool ganglia需要使用apache服务 rrd服务 php服务 这里安装的是最新的php7 0 sud
  • 好盈电调拆解_拆解一个无刷电机调速器

    最近在研究无刷直流电机驱动 就把手头的一个无刷电机调速器拆开研究一下 SkyWalker 40A 电调是 好赢科技 生产的 最大电流为40A 拆解只需要一把刀划开外面的热缩管就可以了 拆开以后就能看到里面的电路板了 这是块4层板 两颗日本红
  • TV的端口

    TV信号 Audio 指的各种乐音的组合 频带为20Hz 20KHz 是人耳可以听到的范围 普通人可以听到的范围大概 100Hz 16KHz Video 随着科技的发展 视频信号也不断推陈出新 主要体现在数字化和高分辨率方面 AV 复合视频
  • 第21课 微信小程序视频标签显示弹幕

    第21课 微信小程序视频标签显示弹幕 效果图如下 wxml代码如下
  • QT的qRegisterMetaType和qRegisterMetaType

    以下只为自己的问题做个记录 参考理解 qRegisterMetaType使用方法如下 1 注册位置 在第一次使用此类链接跨线程的signal slot之前 一般在当前类的构造函数中进行注册 2 注册方法 在当前类的顶部包含 include