gpt4 book ai didi

当插槽确实存在时Qt连接 "no such slot"

转载 作者:行者123 更新时间:2023-12-04 10:24:37 31 4
gpt4 key购买 nike

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否认存在肯定存在的插槽!

最佳答案

检查该moc_mainwindow.cpp是否在您的Build Path中。或者您正在使用其他的moc_window.cpp文件。因为,例如:在QtCreator中,它将源构建到新的构建目录中。如果尝试在其他位置打开源,它也会使用旧的moc_cpp文件。

我要说的是您检查的moc文件可能包含这些插槽定义,但是编译器可能正在使用其他较早创建的moc文件。

关于当插槽确实存在时Qt连接 "no such slot",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656510/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com