qt学习第五课:深入理解信号和槽
2015-08-01 16:22
736 查看
信号和槽是qt编程的基础,在qt中关联信号和槽用到的是
QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection);
其中的sender,receiver都是指向CObject的指针,signal和loat都是函数名 。
在使用中有一些值得注意的地方。比如:
QObject::connect(scrollBar, SIGNAL(valueChanged(int)),
label, SLOT(setNum(int)));
// WRONG
QObject::connect(scrollBar, SIGNAL(valueChanged(int value)),
label, SLOT(setNum(int value)));
函数的形参不能带有变量名,当带有变量名的时候就会出错,return false;
信号和槽连接的可能性:
1.一个信号可以连接多个槽
connect(slider , SIGNAL(valueChanged(int)) , spinbox , SLOT(setValue(int)) );
connect(slider , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
当发送这个信号的时候,会以不确定的顺序一个接一个的调用这些槽
2.多个信号连接同一个槽
connect(slider , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
connect(lcd , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
3.一个信号连接另外一个信号
connect(lineedit , SIGNAL(textChanged(const QString& ) ) , this , SIGNAL(updateRecord(const QString &)));
当发射第一个信号的时候,也会发射第二个信号
4.信号的移除
bool QObject::disconnect(const QObject * sender, const char * signal, const QObject * receiver, const char * method);
这种情况很少使用,就不做介绍了
QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection);
其中的sender,receiver都是指向CObject的指针,signal和loat都是函数名 。
在使用中有一些值得注意的地方。比如:
QObject::connect(scrollBar, SIGNAL(valueChanged(int)),
label, SLOT(setNum(int)));
// WRONG
QObject::connect(scrollBar, SIGNAL(valueChanged(int value)),
label, SLOT(setNum(int value)));
函数的形参不能带有变量名,当带有变量名的时候就会出错,return false;
信号和槽连接的可能性:
1.一个信号可以连接多个槽
connect(slider , SIGNAL(valueChanged(int)) , spinbox , SLOT(setValue(int)) );
connect(slider , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
当发送这个信号的时候,会以不确定的顺序一个接一个的调用这些槽
2.多个信号连接同一个槽
connect(slider , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
connect(lcd , SIGNAL(valueChanged(int)) , this , SLOT(updateStatusBarIndicator(int)) );
3.一个信号连接另外一个信号
connect(lineedit , SIGNAL(textChanged(const QString& ) ) , this , SIGNAL(updateRecord(const QString &)));
当发射第一个信号的时候,也会发射第二个信号
4.信号的移除
bool QObject::disconnect(const QObject * sender, const char * signal, const QObject * receiver, const char * method);
这种情况很少使用,就不做介绍了
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- 基于PyQt5的快速开发框架QFramer
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)
- qt 学习小节
- QT的命名风格
- QT 中的sleep
- QT 串口的监控
- 在VS2010下配置QT和ITK+VTK