如何注册对Qt容器的引用
How to register reference to Qt containers?
我想通过一个信号将QQueue<double>&
传递到另一个线程中的插槽。我想通过引用传递队列,因为我不希望在更改插槽中的队列元素时复制数据。所以我应该注册这个元类型来拥有QueuedConnection。当我注册它像:
qRegisterMetaType<QQueue<double>& >("QQueue<double>&");
我得到以下错误:
error: no matching function for call to 'qRegisterMetaType(const char [16])'
我应该如何注册?
您注册的是没有任何引用的基类型。
qRegisterMetaType<QQueue<double>>();
您还必须在将要使用的每个编译单元中声明元类型,因此理想情况下,您应该在其自己的头文件中有一个typedef:
// DoubleQueue.h
#ifndef DOUBLEQUEUE_H
#define DOUBLEQUEUE_H
#include <QQueue>
typedef QQueue<double> DoubleQueue;
Q_DECLARE_METATYPE(DoubleQueue)
#endif
然后必须始终只使用和注册DoubleQueue
——记住,对于moc
,类型是一块文本。剥离引用后,它必须完全匹配。
qRegisterMetaType<DoubleQueue>();
相关文章:
- Qt中来自不同功能的按钮引用
- QT C++中对全局变量的未定义引用
- QT MYSQL 驱动器构建,未定义对"mysql_get_client_version@0"的引用
- Qt 静态库未定义引用
- C++ / Qt:如何检测主机名或IP地址何时引用当前系统?
- 项目引用上的QT访问冲突
- 在Qt应用程序中包含Python.h会导致对Qt函数的未定义引用
- Qt 错误:未定义对"str2ba"的引用
- 如何检测两个文件条目是否引用与Qt相同的物理文件系统?
- 我无法使用Qt引用QSettings
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用
- Qt Quick + CMake + 自定义 QObject 导致对"vtable"的未定义引用
- 为什么我在将 liblas 链接到 Qt 后出现未定义的引用错误
- qt vsaddin错误对象引用未设置为对象的istanse
- QT创建者中对CMU狮身人面像函数的未定义引用
- 使用QT时对构造函数的未定义引用
- QT用于Android-对AnativeWindow_FromSurface的未定义引用
- 错误:Qt 中对'engOpen'的未定义引用
- 在常量引用获取器上读取写入互斥锁(使用 Qt)
- 在实现OpenSceneGraph时在Qt中获取引用问题