QObject::connect not connecting signal to slot
QObject::connect not connecting signal to slot
我在项目中使用C++和Qt,我的问题是QObject::connect函数没有将信号连接到插槽。我有以下课程:
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成功地连接到了它的信号,但commentAdddSlot失败了。有Q_OBJECT宏,没有关于没有x插槽的警告。除此之外,receivers(SIGNAL(snippetAdded()))给我1,但receivers;qmake和make进行完全编译。我错过了什么?
快速查看您的代码不会知道您的问题是什么。
但是,这里有一些时刻:
- 正如Mike在这里所说:对于连接问题,请始终确保在控制台中检查有关连接失败的消息。由于Qt在运行时之前无法判断连接是否有意义,因此它会通知您连接失败。你可能会认为它会崩溃,但它只是在控制台上悄悄地说了这些话。使用Qt,始终观看控制台是有意义的。Qt打印出各种各样的错误消息,这些消息可以在您遇到问题时提供帮助
-
您可以控制
connect
函数的结果,因此(来自官方文档)如果函数成功地将信号连接到插槽。如果无法创建连接,则返回false例如,如果QObject无法验证任何一个信号的存在或方法,或者如果它们的签名不兼容。
-
检查对象(对话框)是否创建良好,指针是否不等于
NULL
。 - 尝试清除您的项目(QtCreator中的"清除项目"命令),甚至手动删除所有
ui_*
、moc_*
。然后重新编译它
祝你好运!请给我们反馈。
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- Python str to C++ to Python str
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- "no matching function for call to 'Vector::Vector'"错误
- vector<vector<double>> to mxArray using memcpy
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 当覆盖存在时调用基本虚拟"binded to object"函数
- OpenGL VBO Indexing ( How to compute Index Array)
- 为什么我会" void value not ignored as it ought to be"?
- QObject::connect not connecting signal to slot