QT信号与槽之槽函数

Qt的一项重要的机制就是它的信号,在图形用户界面编程中,经常需要将一个窗口部件的变化通知给另一个窗口部件,或者说系统对象进行通信.一般的图形用户编程中采用回调函数进行对象间通信(如gtk+),这样回调函数和处理函数捆绑在一起,但这样做没有信号和槽机制简便和灵活。

QT信号是什么,大家可以方便的搜索到。或许用QT Designer 设计会方便一些,其实手动写出来或许会更好。下面就是自己自己手动设计的一个槽函数的例子。此处写的是类似QQ的登陆框。

1.首先在头文件中定义槽函数。   

 
 
  1. #ifndef LOGINDIALOG_H    
  2. #define LOGINDIALOG_H    
  3. #include <QDialog>     
  4. namespace Ui {     
  5.     class LoginDialog;     
  6. }     
  7. class LoginDialog : public QDialog     
  8. {     
  9.     Q_OBJECT     
  10. public:     
  11.     explicit LoginDialog(QWidget *parent = 0);     
  12.     ~LoginDialog();     
  13. private:     
  14.     Ui::LoginDialog *ui;     
  15. private slots:     
  16.     void on_RegisterButton_clicked();     
  17.     void SignUp(); // 自定义的槽     
  18. };    
  19. #endif // LOGINDIALOG_H    
  20. #ifndef LOGINDIALOG_H  
  21. #define LOGINDIALOG_H  
  22. #include <QDialog> 
  23. namespace Ui {  
  24.     class LoginDialog;  
  25. }  
  26. class LoginDialog : public QDialog  
  27. {  
  28.     Q_OBJECT  
  29. public:  
  30.     explicit LoginDialog(QWidget *parent = 0);  
  31.     ~LoginDialog();  
  32. private:  
  33.     Ui::LoginDialog *ui;  
  34. private slots:  
  35.     void on_RegisterButton_clicked();  
  36.     void SignUp(); // 自定义的槽  
  37. };  
  38. #endif  

2. 在CPP中连接信号click与SignUp并实现槽函数体。

 
 
  1. //构造函数     
  2. LoginDialog::LoginDialog(QWidget *parent) :     
  3.     QDialog(parent),     
  4.     ui(new Ui::LoginDialog)     
  5. {     
  6.     ui->setupUi(this);     
  7.     ui->loginpassword->setEchoMode(QLineEdit::Password); //给密码加密     
  8.     ui->loginuserid->setFocus(); //设置焦点     
  9.     connect(ui->LoginButton,SIGNAL(clicked()),this,SLOT(SignUp()));//connect     
  10. }     
  11. void LoginDialog::SignUp()     
  12. {     
  13. ...     
  14. }    
  15. //构造函数  
  16. LoginDialog::LoginDialog(QWidget *parent) :  
  17.     QDialog(parent),  
  18.     ui(new Ui::LoginDialog)  
  19. {  
  20.     ui->setupUi(this);  
  21.     ui->loginpassword->setEchoMode(QLineEdit::Password); //给密码加密  
  22.     ui->loginuserid->setFocus(); //设置焦点  
  23.     connect(ui->LoginButton,SIGNAL(clicked()),this,SLOT(SignUp()));//connect  
  24. }  
  25. void LoginDialog::SignUp()  
  26. {  
  27. ...  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值