gpt4 book ai didi

c++ - QObject::connect 未将信号连接到插槽

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:06 26 4
gpt4 key购买 nike

我在我的项目中使用 C++ 和 Qt,我的问题是 QObject::connect 函数没有将信号连接到插槽。我有以下类(class):

class AddCommentDialog : public QDialog
{
Q_OBJECT

public:
...some functions

signals:
void snippetAdded();

private slots:
void on_buttonEkle_clicked();

private:
Ui::AddCommentDialog *ui;
QString snippet;
};

我的主窗口的一部分:

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:
void commentAddedSlot();
void variableAddedSlot();
...

private:
AddCommentDialog *addCommentDialog;
...
};

Ant 最后一个对话框;

class AddDegiskenDialog : public QDialog
{
Q_OBJECT

public:
...

signals:
void variableAdded();

private slots:
void on_buttonEkle_clicked();

private:
Ui::AddDegiskenDialog *ui;
...
};

在主窗口构造函数中,我连接信号和槽:

addCommentDialog=new AddCommentDialog();
addDegiskenDialog=new AddDegiskenDialog();

connect(addDegiskenDialog, SIGNAL(variableAdded()), this, SLOT(variableAddedSlot()));
connect(addCommentDialog, SIGNAL(snippetAdded()), this, SLOT(commentAddedSlot()));

重点是我的 commentAddedSlot 已成功连接到它的信号,但 commentAddedSlot 失败了。有 Q_OBJECT 宏,没有诸如没有 x 插槽之类的警告。除此之外,receivers(SIGNAL(snippetAdded())) 给我 1 但 receivers(SIGNAL(variableAdded())) 给我 0 我使用了命令 qmake -project; qmake 和 make 完全编译。我错过了什么?

最佳答案

快速查看您的代码并不知道您的问题是什么。

但是,这里有一些时刻:

  1. 正如迈克所说 here :如果出现连接问题,请始终确保检查控制台以获取有关连接失败的消息。由于 Qt 直到运行时才能判断连接是否有意义,因此它会通知您那里的失败。你可能认为它会崩溃,但它只是在控制台中悄悄地说出这些事情。使用 Qt,始终观察控制台是有意义的。当您遇到问题时,Qt 会打印出各种可以提供帮助的错误消息。
  2. 您可以控制connect 函数的结果,所以(来自官方文档)

    The function returns true if it successfully connects the signal to the slot. It will return false if it cannot create the connection, for example, if QObject is unable to verify the existence of either signal or method, or if their signatures aren't compatible.

  3. 检查您的对象(对话框)是否创建良好并且指针不等于 NULL

  4. 尝试清除您的项目(QtCreator 中的“清除项目”命令),甚至手动删除所有ui_*moc_*。然后重新编译它。

祝你好运!并且,请给我们反馈。

关于c++ - QObject::connect 未将信号连接到插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594677/

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