【发布时间】:2013-08-28 00:22:02
【问题描述】:
我想在 Qt 的一个类中声明我自己的枚举并将其用于信号和插槽,但我得到了这个错误。
QObject::connect: Cannot queue arguments of type 'ClassA::MyEnum'
(Make sure 'ClassA::MyEnum' is registered using qRegisterMetaType().)
这是我的源代码:
ClassA.h
public:
enum MyEnum {
READING = 0,
STOPPED = 1,
FINISHED = 2
};
signals:
void changed(QString text, int readTextInPercent, ClassA::MyEnum status);
ClassA.cpp
emit changed(QString("string"), 50, ClassA::READING);
ClassB.h
public slots:
void changed(QString text, int readTextInPercent, ClassA::MyEnum status);
ClassB.cpp
this->connect(m_ClassA, SIGNAL(changed(QString, int, ClassA::MyEnum)), this, SLOT(changed(QString, int, ClassA::MyEnum)));
void ClassB::changed(QString text, int readTextInPercent, ClassA::MyEnum status) {
}
我不知道我必须将qRegisterMetaType 放在哪里以及使用哪个参数。
【问题讨论】:
标签: c++ qt enums signals-slots