我有一个类,它可以与另一个类发出一些信号。示例:
class CMyClass : public QBytaArray
{
void SomeAction();
}
class CMainClass : public QObject
{
signals:
void testSignal(const CMyClass &myClass);
public:
void test() {
CMyClass data;
emit testSignal(data);
}
}我为CMainClass编写了unix测试:
标题:
#ifndef TESTMAINCLASS_H
#define TESTMAINCLASS_H
#include <QObject>
#include <QSignalSpy>
#include "MainClass.h"
Q_DECLARE_METATYPE(CMyClass)
class CTestMainClass : public QObject
{
Q_OBJECT
public:
explicit CTestMainClass(QObject *parent = 0);
private slots:
void testS();
};
#endif // TESTMAINCLASS_H来源:
#include <QDebug>
#include "TestMainClass.h"
CTestMainClass::CTestMainClass(QObject *parent) : QObject(parent)
{
qRegisterMetaType<CMyClass>();
}
void CTestMainClass::testS()
{
qDebug() << "Test signal emitor";
CMainClass prc;
QSignalSpy spy(&prc, SIGNAL(testSignal(const CMyClass&)));
prc.test();
CMyClass buf = qvariant_cast<CMyClass>(spy.at(0).at(0));
}但是,在日志文件中我得到了:
PASS::initTestCase() QDEBUG :CTestCommandProcessor::Test ()测试信号发射器QDEBUG :CTestCommandProcessor::Test()计数:1 QDEBUG :CTestCommandProcessor::Test() Vals: C:\UnitTest\build-UnitTest-Qt_5_7_1_5_7_1_Static-Release\release\UnitTest.exe.中发生的QVariant(CMyClass,)崩溃功能时间: 0ms总时间: 0ms
我试图更改字符串:
CMyClass buf = qvariant_cast< CMyClass >(spy.at(0).at(0));
至
CMyClass buf = qvariant_cast< CMyClass& >(spy.at(0).at(0));
但是,我也犯了同样的错误。怎么啦?我可以在Qt的最单一的信号中使用我自己的类吗?
发布于 2017-12-02 10:06:50
我很抱歉,这是我的错。我使用了间谍的takeFirst()方法。在那个间谍的目标不再有信号之后。
https://stackoverflow.com/questions/47601959
复制相似问题