首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用我自己的课测试信号

用我自己的课测试信号
EN

Stack Overflow用户
提问于 2017-12-01 21:48:53
回答 1查看 298关注 0票数 0

我有一个类,它可以与另一个类发出一些信号。示例:

代码语言:javascript
复制
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测试:

标题:

代码语言:javascript
复制
#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

来源:

代码语言:javascript
复制
#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的最单一的信号中使用我自己的类吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-02 10:06:50

我很抱歉,这是我的错。我使用了间谍的takeFirst()方法。在那个间谍的目标不再有信号之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47601959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档