Bar*_*urt 5 c++ user-interface qt signals-slots
我在我的项目中使用 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;
};
Run Code Online (Sandbox Code Playgroud)
我的主窗口的一部分:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void commentAddedSlot();
void variableAddedSlot();
...
private:
AddCommentDialog *addCommentDialog;
...
};
Run Code Online (Sandbox Code Playgroud)
Ant 最后一个对话;
class AddDegiskenDialog : public QDialog
{
Q_OBJECT
public:
...
signals:
void variableAdded();
private slots:
void on_buttonEkle_clicked();
private:
Ui::AddDegiskenDialog *ui;
...
};
Run Code Online (Sandbox Code Playgroud)
在主窗口构造函数中,我连接信号和插槽:
addCommentDialog=new AddCommentDialog();
addDegiskenDialog=new AddDegiskenDialog();
connect(addDegiskenDialog, SIGNAL(variableAdded()), this, SLOT(variableAddedSlot()));
connect(addCommentDialog, SIGNAL(snippetAdded()), this, SLOT(commentAddedSlot()));
Run Code Online (Sandbox Code Playgroud)
关键是我的 commentAddedSlot 成功连接到它的信号,但 commentAddedSlot 失败。有 Q_OBJECT 宏,没有警告,例如没有 x 插槽。除此之外,receivers(SIGNAL(snippetAdded())) 给了我 1 但receivers(SIGNAL(variableAdded())) 给了我 0 并且我使用了命令 qmake -project; qmake 和 make 完全编译。我错过了什么?
快速查看您的代码不知道您的问题是什么。
但是,这里有一些时刻:
您可以控制connect函数的结果,所以(来自官方文档)
如果该函数成功将信号连接到槽,则返回 true。如果它无法创建连接,例如,如果 QObject 无法验证信号或方法是否存在,或者它们的签名不兼容,它将返回 false。
检查您的对象(对话框)是否创建良好并且指针不等于NULL。
ui_*, moc_*. 然后重新编译就可以了。祝你好运!请给我们反馈。
| 归档时间: |
|
| 查看次数: |
8821 次 |
| 最近记录: |