泛型类中使用自定义类型,自定义类型为struct SP104{ BYTE addr0; BYTE addr1; BYTE addr2; };和struct DP104{ BYTE addr0; BYTE addr1; BYTE addr2; QStrig data; }; 使用 QMetaType::type() 函数获取 自定义的类型 ,主函数使用 qRegisterMetaType() 函数注册 T ,请 用qt5写一段代码,代码包含.h和.cpp。谢谢!
时间: 2024-01-26 18:04:52 浏览: 25
下面是.h文件的代码:
```cpp
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
#include <QMetaType>
#include <QString>
struct SP104 {
BYTE addr0;
BYTE addr1;
BYTE addr2;
};
struct DP104 {
BYTE addr0;
BYTE addr1;
BYTE addr2;
QString data;
};
Q_DECLARE_METATYPE(SP104)
Q_DECLARE_METATYPE(DP104)
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = nullptr);
void registerMetaTypes();
signals:
public slots:
};
#endif // MYCLASS_H
```
下面是.cpp文件的代码:
```cpp
#include "myclass.h"
MyClass::MyClass(QObject *parent) : QObject(parent)
{
}
void MyClass::registerMetaTypes()
{
qRegisterMetaType<SP104>("SP104");
qRegisterMetaType<DP104>("DP104");
}
```
在主函数中,可以这样使用:
```cpp
#include <QCoreApplication>
#include "myclass.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass myClass;
myClass.registerMetaTypes();
return a.exec();
}
```