我在我的项目中使用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()));
关键是我的commentsAdded已成功连接到它的信号,但是commentsAddedSlot失败了 . 有Q_OBJECT宏,没有关于没有x槽的警告 . 除此之外,接收器(SIGNAL(snippetAdded()))给我1但接收器(SIGNAL(variableAdded()))给我0,我使用命令qmake -project; qmake和make to complete compile . 我错过了什么?
1 回答
快速查看代码不会给您带来什么问题 .
但是,这里有一些时刻:
正如Mike所说here:出现连接问题时,请务必检查控制台是否有关于连接失败的消息 . 由于Qt可以认为它会崩溃,但它只是在控制台中悄悄地说出这些东西 . 有了Qt,总能看到控制台是有意义的 . Qt打印出各种错误消息,这些消息可以在您遇到问题时提供帮助 .
您可以控制
connect
函数的结果,所以(来自官方文档)检查对象(对话框)是否创建良好且指针不等于
NULL
.尝试清除项目(QtCreator中的"Clear project"命令),甚至手动删除所有
ui_*
,moc_*
. 然后重新编译它 .祝好运!并且,请给我们反馈 .