- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Pkg 类,我需要以 QVariant 的形式使用它。
在我的 Pkg.h 结束时,我有:
Q_DECLARE_METATYPE(Pkg)
这不会产生编译错误,但在我的 main.cpp 中我必须这样做:
qRegisterMetaType<Pkg>("Pkg");
这也不会出错,但是当我尝试创建 QVariant(Pkg) 时,我会遇到很多错误,例如:
In member function 'void MainWindow::FillPackagesList()':
mainWin.cpp:233: error: 'qRegisterMetaType' isnot a member of 'QMetaType' mainWin.cpp:234: error: no matching function for call to QVariant::QVariant(Pkg&)'
/usr/lib/qt/include/QtCore/qvariant.h:208: note: QVariant::QVariant(Qt::GlobalColor)
/usr/lib/qt/include/QtCore/qvariant.h:206: note: QVariant::QVariant(const QRegExp&)
/usr/lib/qt/include/QtCore/qvariant.h:204: note: QVariant::QVariant(const QLocale&)
/usr/lib/qt/include/QtCore/qvariant.h:203: note: QVariant::QVariant(const QUrl&)
/usr/lib/qt/include/QtCore/qvariant.h:201: note: QVariant::QVariant(const QRectF&)
/usr/lib/qt/include/QtCore/qvariant.h:200: note: QVariant::QVariant(const QRect&)
错误接连不断...
最佳答案
QVariant 构造函数不会只采用任何旧类型。您需要使用 QVariant::setValue()或 qVariantFromValue .
关于linux - QVariant 和 qRegisterMetaType 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/357537/
#include typedef QList IntList; qRegisterMetaType("IntList"); error C2909: 'qRegisterMetaType':
我用 Qt/C++ 开发了一个应用程序,该应用程序目前在一个线程中运行,并且基于 UI 和框架。 UI 和框架使用 Qt 提供的信号/槽机制一起讨论。我添加了线程,因为框架内的某些操作卡住了 UI。
我目前正在使用 Qt 来构建一个能够发送和接收通过 QSerialPort 连接的数据包的应用。 为此,我有一个对象连接我的应用程序和设备之间的通信。 在这个类中,我可以调用一个 run 成员函数来启
我在基于 QObject 的类中有一个枚举和一个属性,例如: Q_ENUMS(StateEnum) Q_PROPERTY(StateEnum state READ state NOTIFY state
这是我的包含 Q_ENUM 的类。我需要使用 Q_ENUM 因为我使用 QVariant。原因是在我的应用程序中,有一个部分我们调用 qRegisterMetaType,如果可能的话,我们希望仅在 1
我有一个包含多个 dll 的 QT 项目。 动态链接库:A、B、C A 依赖于 B 和 C。而 B 和 C 没有任何依赖关系。 B 导出自定义类 B_Custom。 B_Custom 类派生自 QOb
通常我像这样在 Qt 元系统中注册我的类:qRegisterMetaType(); 然而,我注意到有些人写 qRegisterMetaType();这是等价的吗?或者如果我想将指针与 Foo 一起使用
我有一个 Pkg 类,我需要以 QVariant 的形式使用它。 在我的 Pkg.h 结束时,我有: Q_DECLARE_METATYPE(Pkg) 这不会产生编译错误,但在我的 main.cpp 中
我一直在寻找答案,但无济于事。我的感叹如下: 我有一个大致如下所示的 ClassA: class ClassA : public QObject { Q_OBJECT public:
我有一个类是 QObject 的子类,我想将其注册为元类型。 QObject documentation声明复制构造函数应该是私有(private)的,但是 QMetaType documentati
我试图将 QWebSocket 连接放入 QThread QThread *thread = new QThread; connect(&websocket,&QWebSocket::connecte
在排队信号中使用自定义类型的情况。注册自定义类型的正确顺序是什么? 是否有必要在qRegisterMetaType之前调用Q_DECLARE_METATYPE? 为什么我必须为排队信号注册自定义类型而
我正在尝试发送一个使用 uint8_t 的排队信号作为参数。 我收到这个错误: QObject::connect: Cannot queue arguments of type 'uint8_t' (
我目前正在将我的应用程序从 Qt4.8 移植到 Qt5.6 一些用于编译和链接的代码现在停止正确链接。我将范围缩小到对 qRegisterMetaType 的调用其中 MyClass* 继承自 QOb
我是一名优秀的程序员,十分优秀!