电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

qt c++图形界面编程技术

18页
  • 卖家[上传人]:小**
  • 文档编号:93283495
  • 上传时间:2019-07-19
  • 文档格式:DOC
  • 文档大小:1.17MB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 通识教育课程论文 课程名称: C+图形界面编程技术 _ 学 院 _ 专业班级 学 号 姓 名 爱尔兰(KEN 联系方式 任课教师 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部分都是互相独立的类,在类的

      2、定义中,类与类之间无直接的函数调用,这些组件定义了若干个signal/slot, 而这3个类的实例是通过 signal/slot机制偶合在一起的。mainWindow上的Cut按键被按下后,mainWindow就隐藏,并发出一个StartCut()的信号,表示“开始截图”。然后FEdit接收到StartCut()信号后,它就初始化,并记录下此时刻的屏幕背景,最后全屏显示半透明的背景。然PSee接收这个信号后,它就隐藏起来。当用户在全屏截图器FEdit的全屏半透明背景上选定好区域后,FullEdit就会隐藏窗口并发出FinishCut“截图完成”的信号(信号中包含了截图的地址),然后截图查看器PSee接收到FinishCut信号及其中的截图的地址后,就会显示窗口,并在窗口上面绘制截图显示给用户,而mainWindow收到FinishCut信号后,就会显示主窗口,并使save按钮可见。此后,用户点击save按钮并成功保存后,mainWindow就会发出PicSaved“图片保存信号”,然后PSee会收到此信号,然后隐藏。大概的流程就是这样。软件的功能是简单的,但是,里面的思想却很有意义的。

      3、对于mainWindow,它只管发射信号,压根儿不用知道有多少个对象收到这些信号(当然也不可能知道),并且当收到特定的信号时,就去执行信号处理器slot就可以了,FullEdit 和 PicSee也一样。因为具体哪个信号与哪个槽有连接关系,不是在类的定义在确定的,而且信号/槽的连接是面向类的实例的(所以不可能由类的抽象或定义来确定),QObject: connect (sender, SIGNAL,receiver,SLOT)这个函数要传递对象的实例作参数,所以无法对抽象(未实例化)的对象之间建立连接关系。这些信号/槽的连接是在类外定义的(上述3个对象的连接关系是在main.cpp中面向这3个类的具体实例来定义的,与类的定义无关系)。互相独立的组件+ 可靠的信号/槽机制 功能完善的软件在一个项目中,假如我是PM,那么只要我们确定好项目中各组件的“信号/槽”连接关系后,我们就可以将这个项目分解为若干个相互独立,无不干扰的的部分,开发过程在只要严格尊守约定好的信号和槽就可以了,待各部分组件完成后,建立后组件的实例间的“信号/槽”关系好,这个项目就完成了。嗯,这思想,这开发模式,不正是全世界

      4、开发者所追求的目标吗?SRC:main.cpp#include #include widget.h#include FullEdit.h#include PicSee.hint main(int argc, char *argv) QApplication a(argc, argv); Widget mainWindow; /主窗口FullEdit FEdit; /全屏截图器PicSee PSee; /截图后的截图查看器/mainWindow to PSee:mainWindow发出StartCut信号后,PSee先最小化,然后再 隐藏QObject:connect(&mainWindow,SIGNAL(StartCut(),&PSee,SLOT(Minimized_Hide();/mainWindow to FEdit:mainWindow发出StartCut信号后,FEdit先初始化再全屏显示QObject:connect(&mainWindow,SIGNAL(StartCut(),&FEdit,SLOT(Init_FCShow();/-/当FEdit发出FinishCut信号时,

      5、mainWindow接收图片指针,并显示窗口(showNormal)QObject:connect(&FEdit,SIGNAL(FinishCut(QImage *),&mainWindow,SLOT(Get_Pix_Show(QImage *);/当FEdit发出FinishCut信号时,PSee接收图片指针,并显示窗口(showNormal)QObject:connect(&FEdit,SIGNAL(FinishCut(QImage *),&PSee,SLOT(Get_Pix_Show(QImage *);/-/当FEdit发出CancleCut截图被取消的信号,mainWindow接收后就显示主窗口QObject:connect(&FEdit,SIGNAL(CancleCut(),&mainWindow,SLOT(showNormal();/mainWindow to PSee:mainWindow发出PicSaved图片保存信号后,PSee先最小化,然后再 隐藏QObject:connect(&mainWindow,SIGNAL(PicSaved(),&PSee,SLOT(Mi

      6、nimized_Hide(); mainWindow.show(); return a.exec();/widget.ui/widget.h#ifndef WIDGET_H#define WIDGET_H#include namespace Ui class Widget;class Widget : public QWidget Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); Widget();signals:void StartCut();/表示开始截图的信号void PicSaved();/图片成功保存的信号public slots: /收到FinishCut信号时,mainWindow接收图片指针,并显示窗口(showNormal) void Get_Pix_Show(QImage *final_pix);private slots: void on_CutButton_clicked(); void on_SaveButton_clicked();private: Ui:Widget *ui; QImage fina

      7、l_pix; /最终的截图;#endif / WIDGET_H/widget.ccp#include widget.h#include ui_widget.h#include #include#include FullEdit.hWidget:Widget(QWidget *parent) : QWidget(parent), ui(new Ui:Widget) ui-setupUi(this); this-setFixedSize(265,90);this-setWindowTitle(WindowCut RC 3.1);Widget:Widget() delete ui;/*按钮Cut被按下后,截图查看器PSee隐藏,主窗口隐藏,然后调用全屏截图器FEdit的init()来获得当前窗口的背景,并全屏显示*/void Widget:on_CutButton_clicked()this-showMinimized(); this-hide();emit StartCut(); /发出开始截图StartCut信号/*保存按钮按下后,选择保存的位置,然后保存,保存成功后,截图查看器PSee隐藏,否则发出warning*/void Widget:on_SaveButton_clicked() QString saveName = QFileDialog:getSaveFileName (this, tr(Save File),/,tr(BMP File(*.BMP); PNG File(*.PNG); JPEG File(*.JPG); if(saveName.isNull() /没有选择路径,则返回主窗口 return; if(final_pix.save(saveName)emit PicSaved(); /图片成功保存的信号 else QMessageBox:warning(this,Save Error,Save Error);/*Get_Pix() 是下个SLOT,当FEdit发出Send_Pix信号时,主窗口就用Get_Pix来接收发出的图片指针然后Enable保存按钮,显示主窗口,然后将此图片的指针发给截图查

      《qt c++图形界面编程技术》由会员小**分享,可在线阅读,更多相关《qt c++图形界面编程技术》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.