Qt学习之路(4):初探信号槽[VC/C++编程]
本文“Qt学习之路(4):初探信号槽[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
看过了简单的Hello, world! 之后,下面来看看Qt最引认为豪的信号槽机制!
所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座.怎么说呢?当某种事件发生之后,比方,点击了一下鼠标,大概按了某个按键,这时,这个组件就会发出一个信号.就像是广播一样,假若有了事件,它就漫天发声.这时,假若有一个槽,恰好对应上这个信号,那么,这个槽的函数就会履行,也就是回调.就像广播发出了,假如你感爱好,那么你就会对这个广播有反映.干巴巴的注释很无力,还是看代码:
#include <QtGui/QApplication>
#include <QtGui/QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton *button = new QPushButton("Quit");
QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit()));
button->show();
return a.exec();
}
这是在Qt Creator上面新建的文件,因为前面已经具体的阐明怎么新建工程,所以这里就不再赘述了.这个程序很简单,只有一个按钮,点击之后程序退出.(趁便说一句,Qt里面的button被叫做QPushButton,真搞不懂得为什么一个简单的button非得加上push呢?呵呵)
主如果看这一句:
QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit()));
QObject是全部类的根.Qt利用这个QObject实现了一个单根担当的C++.它里面有一个connect静态函数,用于衔接信号槽.
当一个按钮被点击时,它会发出一个clicked信号,意思是,向四周的组件们声明:我被点击啦!当然,别的很多组件都懒得理他.假如对它感爱好,就奉告QObject说,你帮我盯着点,只要button发出clicked信号,你就奉告我——想了想之后,说,算了,你也别奉告我了,直接去履行我的某某某函数吧!就这样,一个信号槽就形成了.具体来说呢,这个例子就是QApplication的实例a说,假如button发出了clicked信号,你就去履行我的quit函数.所以,当我们点击button的时刻,a的quit函数被调用,程序退出了.所以,在这里,clicked()就是一个信号,而quit()就是槽,形象地说就是把这个信号插进这个槽里面去.
Qt利用信号槽机制完成了事件监听操作.这近似与Swing里面的listener机制,只是要比这个listener简单得多.今后我们会看到,这种信号槽的定义也非常的简单.值得注意的是,这个信号槽机制仅仅是利用的QObject的connect函数,其他并没有什么耦合——也就是说,完好可以操纵这种机制实现你自己的信号监听!不过,这就需求利用qmake预处理一下了!
细心的你大概发现,在Qt Creator里面,SIGNAL和SLOT竟然变颜色了!没错,Qt确切把它们当作了关键字!实际上,Qt恰是操纵它们扩大了C++语言,因此才需求利用qmake举行预处理,比便使普通的C++编译器可以顺利编译.别的,这里的signal和Unix系统里面的signal没有任何的关系!哦哦,有一点关系,那就是名字是一样的!
信号槽机制是Qt关键部份之一,今后我们还会再细心的探究这个问题的.
以上是“Qt学习之路(4):初探信号槽[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |