• 5194阅读
  • 8回复

[提问]QT 4.7 的SIGNAL和SLOT机制是否有所改变? [复制链接]

上一主题 下一主题
离线keyu21
 

只看楼主 倒序阅读 楼主  发表于: 2011-02-09
我通过Creator创建Dialog,在其中放上了QPushButton。然后在构造函数中通过connect绑定了事件,但是最后点击时没有触发事件。除非在界面上绑定该事件
离线kimtaikee

只看该作者 1楼 发表于: 2011-02-09
跟踪调试

离线wxr159835
只看该作者 2楼 发表于: 2011-02-10
應該是你的變量作用范圍的問題吧
离线keyu21

只看该作者 3楼 发表于: 2011-02-10
这个是头文件
  1. #ifndef DIALOG_H
  2. #define DIALOG_H
  3. #include <QDialog>
  4. namespace Ui {
  5.     class Dialog;
  6. }
  7. class Dialog : public QDialog
  8. {
  9.     Q_OBJECT
  10. public:
  11.     explicit Dialog(QWidget *parent = 0);
  12.     ~Dialog();
  13. private:
  14.     Ui::Dialog *ui;
  15. private slots:
  16.     void addContact();
  17. };
  18. #endif // DIALOG_H


下面是实现文件
  1. #include "dialog.h"
  2. #include "ui_dialog.h"
  3. #include <QMessageBox>
  4. Dialog::Dialog(QWidget *parent) :
  5.     QDialog(parent),
  6.     ui(new Ui::Dialog)
  7. {
  8.     ui->setupUi(this);
  9.     //connect(ui->addButton, SIGNAL(click()), this, SLOT(addContact()));
  10.     //上面这个语句好像不起作用,只有我在设计界面上绑定了该事件后才能触发事件。
  11. }
  12. Dialog::~Dialog()
  13. {
  14.     delete ui;
  15. }
  16. void Dialog::addContact()
  17. {
  18.     QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("测试"));
  19. }
离线shaoxie1986

只看该作者 4楼 发表于: 2011-02-10
我记得是可以的啊
离线keyu21

只看该作者 5楼 发表于: 2011-02-10
找到了原因,4.7后跟以前的绑定有些些不同。
离线shaoxie1986

只看该作者 6楼 发表于: 2011-02-10
回 5楼(keyu21) 的帖子
不同之处在哪啊?
离线引子
只看该作者 7楼 发表于: 2011-02-10
connect(ui->addButton, SIGNAL(click()), this, SLOT(addContact()));这条语句貌似有问题
步子大了扯着蛋!
离线hicjiajia

只看该作者 8楼 发表于: 2011-02-10
connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addContact()));
快速回复
限100 字节
 
上一个 下一个