通识教育课程论文 课程名称: C++图形界面编程技术 _ 学 院 _ 专业班级 学 号 姓 名 爱尔兰 (KEN 联系方式 irelandken @ 163 .com 任课老师 LZ 论 QT 的信号/槽机制——WindowCut—一个简单有用的截图软件在图形界面编程技术,我比较喜爱 QT 这个框架,喜爱它的一次编写,到处编译这种方式,既高效,移植性又强,我试过在 window 下用 Qt creator 开发一个软件,然后直接将工程放到 linux ubunto 11.04 下,再次用 Qt creator打开之前的工程,很简单地直接编译一次,一个代码也不用改,就将该软件移植到 Linux 下了,这一点很不错。。。更重要的是,Qt 为我们带来了全新的思想:将一个工程逻辑分解为多个组件,利用强大的信号/槽机制,竟然可使这个工程分解为相互独立,互不干扰的若干个部分。以下,我将通过介绍我的 WindowCut 截图软件的编写过程来分析这种思想。界面:截图过程:截图后的效果:思想:这个软件由 1:主窗口mainWindow,2:全屏截图器 FullEdit FEdit(就是半透明的全屏的组件) 和 3:截图查看器 PicSee PSee 组成,这3部分都是互相独立的类,在类的定义中,类与类之间无直接的函数调用,这些组件定义了若干个signal/slot, 而这3个类的实例是通过 signal/slot机制偶合在一起的。mainWindow上的Cut按键被按下后,mainWindow就隐藏,并发出一个StartCut()的信号,表示“开始截图”。。然后FEdit接收到StartCut()信号后,它就初始化,并记录下此时刻的屏幕背景,最后全屏显示半透明的背景。。。然PSee接收这个信号后,它就隐藏起来。。当用户在全屏截图器FEdit的全屏半透明背景上选定好区域后,FullEdit就会隐藏窗口并发出FinishCut“截图完成”的信号(信号中包含了截图的地址),然后截图查看器PSee接收到FinishCut信号及其中的截图的地址后,就会显示窗口,并在窗口上面绘制截图显示给用户,而mainWindow收到FinishCut信号后,就会显示主窗口,并使save按钮可见。此后,用户点击save按钮并成功保存后,mainWindow就会发出PicSaved“图片保存信号”,然后PSee会收到此信号,然后隐藏。大概的流程就是这样。软件的功能是简单的,但是,里面的思想却很有意义的。对于mainWindow,它只管发射信号,压根儿不用知道有多少个对象收到这些信号(当然也不可能知道),并且当收到特定的信号时,就去执行信号处理器slot就可以了,FullEdit 和 PicSee也一样。。因为具体哪个信号与哪个槽有连...