您的位置:首页 > 编程语言 > Qt开发

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);

这种情况很少使用,就不做介绍了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt