Visual studio 2010 Qt信号和插槽连接不';好像不行

Visual studio 2010 Qt信号和插槽连接不';好像不行,visual-studio-2010,qt4,Visual Studio 2010,Qt4,我已经检查了很多次,没有发现我的错误 在我的主课上,我有: connect(userControl, SIGNAL(DataToPlot(std::vector<double>)), this, SLOT(test(std::vector<double>))); connect(用户控制,信号(DataToPlot(std::vector)),this,SLOT(test(std::vector)); 在同一类中,我有一个测试功能和原型: public slots:

我已经检查了很多次,没有发现我的错误

在我的主课上,我有:

connect(userControl, SIGNAL(DataToPlot(std::vector<double>)), this, SLOT(test(std::vector<double>)));
connect(用户控制,信号(DataToPlot(std::vector)),this,SLOT(test(std::vector));
在同一类中,我有一个测试功能和原型:

public slots:
    void test(std::vector<double>);

void RelayduinoGuiThreading::test(std::vector<double> x)
{
    123;  // I put a breakpoint on this line to check when the slot is called.
}
公共插槽:
无效测试(标准::向量);
void RelayduinoGuiThreading::test(std::vector x)
{
123;//我在这行上放了一个断点,以检查插槽何时被调用。
}
在单独的线程中运行,我有以下内容:

signals:
    void DataToPlot(std::vector<double>);

somefunction
{
        // Stuff...

        std::vector<double> x;
        emit(DataToPlot(x));
}
信号:
void DataToPlot(std::vector);
某些函数
{
//东西。。。
std::向量x;
发射(DataToPlot(x));
}
现在是这样,如果我将std::vector更改为int或double,它就会工作

另外,#include在两个类头中

我甚至在我的项目中的其他地方发出了一个std::vector并捕捉到了信号,并且没有任何问题

非常感谢你的帮助


谢谢。

尝试将此添加到
RelayduinoGuiThreading
标题中:

Q_DECLARE_METATYPE(std::vector<float>);
Q_DECLARE_元类型(std::vector);

尝试将其添加到
RelayduinoGuiThreading
标题中:

Q_DECLARE_METATYPE(std::vector<float>);
Q_DECLARE_元类型(std::vector);

如Qt文档中所述

请注意,如果要在排队信号和插槽连接或QObject的属性系统中使用该类型,还必须调用qRegisterMetaType(),因为名称在运行时解析

因此,在主应用程序中,您必须调用:

qRegisterMetaType<std::vector<float> >("std::vector<float>");

文档是否如Qt Docu中所述详细

请注意,如果要在排队信号和插槽连接或QObject的属性系统中使用该类型,还必须调用qRegisterMetaType(),因为名称在运行时解析

因此,在主应用程序中,您必须调用:

qRegisterMetaType<std::vector<float> >("std::vector<float>");

文档是否详细

谢谢。我肯定会研究QMetaType类。虽然我很好奇为什么std::vector在我的项目中的其他地方工作,但是std::vector没有。为什么std::vector要“注册”而不是std::vector?无论如何,谢谢你提供的信息。我真的不知道我怎么会发现。。。问题似乎是什么都有可能。在将std::vector更改为std::vector后,它起了作用。我不太清楚为什么你们两个都用浮点数而不是双数,但没关系。谢谢非常感谢。我肯定会研究QMetaType类。虽然我很好奇为什么std::vector在我的项目中的其他地方工作,但是std::vector没有。为什么std::vector要“注册”而不是std::vector?无论如何,谢谢你提供的信息。我真的不知道我怎么会发现。。。问题似乎是什么都有可能。在将std::vector更改为std::vector后,它起了作用。我不太清楚为什么你们两个都用浮点数而不是双数,但没关系。谢谢