QT信号与槽之槽函数
创始人
2024-07-31 19:41:17
0

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

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

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

  1. #ifndef LOGINDIALOG_H    
  2. #define LOGINDIALOG_H    
  3. #include      
  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  
  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. ...  

自己定义的槽函数就这么实现啦!

小结:QT信号槽函数的内容就介绍完了,文字不多,基本是代码实现,希望你能够实现出效果,能够帮你学习槽函数

【编辑推荐】

QT的信号与槽机制

浅谈Qt中多线程编程

在Qt中如何写控制台程序

从新手到老手之Qt学习历程

QT中关于信号与槽机制的实现原理

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...