Qt v4.8.0,VC2010编译器
我有一个QMainWindow基础类,我正在尝试发送它涉及的信号QUuid
但是,每次运行它我都会收到错误:
Object::connect: No such slot MainWindow::on_comp_connected(QUuid) in ..\..\src\mainwindow.cpp:143
Object::connect: (receiver name: 'MainWindow')
Run Code Online (Sandbox Code Playgroud)
由于插槽肯定存在(它在moc_中),它正在推动我的便利
class MainWindow : public QMainWindow
{
Q_OBJECT
// SNIP private typedefs
public:
MainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~MainWindow();
// SNIP public methods
signals:
void testSendQuuid(const QUuid &qcid);
public slots:
void on_comp_connected(const QUuid &qcid);
private:
// SNIP private parts
QOpenAcnController *acnInt; // This is where the signal comes from
};
Run Code Online (Sandbox Code Playgroud)
在MainWindow构造函数的末尾(提到的第143行)我有:
connect(acnInt, SIGNAL(callback_comp_connected(QUuid)),
this, SLOT(on_comp_connected(QUuid)));
Run Code Online (Sandbox Code Playgroud)
鉴于插槽肯定存在于moc_mainwindow.cpp中(我检查过,它是插槽#1),究竟是什么阻止连接发生?
如果我尝试将testSendQuuid(QUuid)信号连接到插槽,我就没有这样的信号,也没有这样的插槽.
我不能为我的生活弄清楚为什么Qt否认存在一个绝对存在的插槽!
检查是否moc_mainwindow.cpp在您的计算机中Build Path。或者您正在使用其他的moc_window.cpp文件。因为,例如:在QtCreator中,它将源构建到新的构建目录中。如果尝试在其他位置打开源,它也会使用旧的moc_cpp文件。
我要说的是,您检查的moc文件可能包含这些插槽定义,但是编译器可能正在使用其他较早创建的moc文件。