【发布时间】:2012-05-26 06:10:09
【问题描述】:
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')
这让我如厕,因为插槽确实存在(它在 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
};
在 MainWindow 构造函数的末尾(提到的第 143 行)我有:
connect(acnInt, SIGNAL(callback_comp_connected(QUuid)),
this, SLOT(on_comp_connected(QUuid)));
鉴于插槽肯定在 moc_mainwindow.cpp 中(我检查过,它是插槽 #1),到底是什么阻止了连接的发生?
如果我尝试将testSendQuuid(QUuid) 信号连接到插槽,我不会收到这样的信号,也不会收到这样的插槽。
我一生都无法弄清楚为什么 Qt 否认存在一个 绝对存在的插槽!
【问题讨论】:
-
您是否已经尝试过
clean、Run qmake、build序列?有时 Qt 生成的make文件会混淆。 -
是的,我尝试的第一件事!我有几次让 qmake 或 moc 感到困惑(通常是在将一个类提升为 QObject 后代时,而以前不是这样)。在这种情况下,它没有任何区别。
-
那些私有类型定义是什么?
标签: qt signals-slots