QT初探(QT+VS2010)
配置方法网上很多,就不详述了。基本的ui样式也在qt designer中绘制好了。
首先探究如何让按钮响应事件。在Qt Creator自带的教程中,有讲解说通过右键点击按钮来添加signal和slot。但是我并没有右键找到,而是在designer右侧的工具栏位置找到“信号/槽编辑器”这个单独的菜单。通过“+”号新建,然后在每个选项中选择需要的类和对象即可。其中signal就是发生的动作,slot是响应后执行的函数。具体机制网上搜索有很多,这里有一篇http://www.cnblogs.com/MuyouSome/p/3515941.html。
我希望通过点击菜单,而在视图中显示一张图片。仅仅根据名称,我在视图中添加了QGraphicsView。查找官网上的reference,说QGraphicsView一般和QGraphicsScene一起使用。在创建了QGraphicsScene类后,可以通过addItem()添加已有的QGraphicsItem类对象,或者通过addEllipse()等函数直接添加形状。去查了下QGraphicsItem,好像没有绘制一张图片的功能。于是网上搜了下,有人说可以用QPixmap这个类。去reference查,类描述中说,qt有四个处理image数据的类:QImage,QPixmap,QBitmap,QPicture,其中QPixmap被设计和优化成利于在屏幕上显示image的,而QImage是针对I/O操作的。通常如果需要对图片进行特定操作,就使用QImage载入图片,操作完成后转换成QPixmap来显示。但如果不需要进行操作,也可以直接加载成为QPixmap,QPixmap有通过图片路径初始化的函数。绘制的方法由网络提供:QPixmap pixmap;QPainter painter(pixmap);QGraphicsScene::render(painter,....);
在进行图片操作之前,还需要打开文件。qt提供了QFileDialog类进行文件选择(http://blog.csdn.net/lpdpzc/article/details/9010801)。似乎在对话框弹出时主进程是阻塞的?见http://www.fengfly.com/plus/view-171411-1.html中例程,亲测也是如此。
完成这步还是需要信号与槽。虽然qt designer中有信号/槽编辑器,但暂时没有成功使用,而是手动添加QObject::cnnect函数。在此对于qt在vs中自动生成的一些文件进行了更多了解。qt在vs自动生成的文件包括:ui_projectname.h,其中的类包括了使用designer设计的所有组件;双击projectname.ui可以打开designer,在designer中设计修改组件,会在ui_projectname.h中自动更改,但好像不是很灵敏,有时需要编译一下才改;main.cpp为程序入口;projectname.h和projectname.cpp是连接ui和vs程序的窗口类,其中实例了ui,我把QObject::connect函数用在这个类(projectname类,在projectname.h中)的初始化函数中。因为使用到的QFileDialog类需要传入父窗口,而这个类是“最父”的窗口,直接传入"this"很方便,所以把slot的函数也写在这个类里。而在main函数中会自动生成这个类的实例和显示窗口的show()函数。connect具体使用例子:QObject::connect (ui.actionOpenPicture,SIGNAL(triggered()),this,SLOT(openImage()));而slot的函数在声明的时候得使用关键字slot:public slot:void openImage();
获得图片路径后要显示图片,使用图片路径初始化QPixmap类,然后实例一个QGraphicsScene类,使用这个类初始化通过designer生成的QGraphicsView类。使用QGraphicsScene::addPixmap添加QPixmap实例,使用QGraphicsView::show显示出来,具体见http://zhidao.baidu.com/link?url=_83D7iW5qJw1-zHC4Jh1xIQKE_qCeThnd54FB5EkHcDPq8aUQuBoRP8B7MV65G0Y14ZX9GPWjAXhSX0h3XuQ9a。图片显示出来后,如果图片太大,会出现显示界面有滚动条的情况,这个问题之后再解决。
QT初探(QT+VS2010)相关推荐
- 关于 error: LNK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案【Qt】【 VS2010】
关于 error: LNK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案[Qt][ VS2010] 参 ...
- 【Qt】Qt样式表总结(四):CSS盒子模型
官网:http://doc.qt.io/qt-5/stylesheet-customizing.html#box-model [Qt]Qt样式表总结(一):选择器 [Qt]Qt样式表总结(二):冲突和 ...
- 【Qt】Qt样式表总结(三):QObject 属性
[Qt]Qt样式表总结(一):选择器 [Qt]Qt样式表总结(二):冲突和命名空间 QObject 属性 可以使用 qproperty < 属性名称 > 语法,设置任何可以Q_PROPER ...
- 【Qt】Qt程序编译成功,执行时报错:程序异常结束,crashed
[Qt]Qt程序编译成功,执行时报错:程序异常结束,crashed 错误打印信息 Starting E:*exe- 程序异常结束. E:*.exe crashed. 原因 使用到外部库,编译时,指定了 ...
- 【Qt】Qt Creator中文输入设置
#[Qt]Qt Creator中文输入设置 一.ubuntu中文输入法的设置 1.在终端中输入: $ ibus-setup 弹出界面如图: 2.选择中文输入法 3.点击右上角设置–>选择系统设置 ...
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...
- Qt 之 Qt/Qt Lite 自编译详解(VS/MinGW/...)
2018/3/24 目前QT更新到了5.10.1.文章增加了对该版本的说明. 2020/9/5 目前QT更新到了5.15.0.文章更新了部分内容 写在前面 现在,网上关于 Qt 编译的文章数不胜数 ...
- Qt Creator Qt快速最佳实践
Qt Creator Qt快速最佳实践 Qt快速最佳实践 命名约定 规划用户界面 经济地使用组件 Qt快速最佳实践 以下准则描述了使用Qt Creator创建可在预期平台上完美运行的UI和场景的最有效 ...
- Qt Creator Qt Quick用户界面表单ui-forms
Qt Creator Qt Quick用户界面表单 Qt Quick用户界面表单 支持的方法 JavaScript函数 Qt QML方法 使用Qt快速UI表单 Qt Quick用户界面表单 您可以使用 ...
- QT实现Qt Quick和three.js渲染和实现QML3D控件
QT实现Qt Quick和three.js渲染和实现QML3D控件 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 结合Qt Quick和three.js渲染. 演示 ...
最新文章
- Ping命令为什么要加上“-t”参数
- 2017-2018-1 20155327 实验四 外设驱动程序设计
- 第八章 神经网络表示-机器学习老师板书-斯坦福吴恩达教授
- android 添加广告用proguard混淆后不显示问题解决方法
- C++,string类的指针,string类数组的指针 string *s
- 免费流量监控软件,最大可同时监控1000台电脑
- 经典排序算法 - 堆排序Heap sort
- Oracle导入程序Imp的使用详解
- 和阿里同年创办,为何当当却走向了“卖身”的结局?
- signature=fc89d4352b6699754c14ce282ec75426,Broken chiral symmetry on a null plane
- 【C/C++】BOOST 线程完全攻略 - 基础篇
- 用PHP ping 一个 IP
- UWP 手绘视频创作工具技术分享系列
- 电脑文件同步备份软件哪个好用?
- 简单操作去除亿图流程图制作软件(试用版)的水印
- 计算机丢失OX0000007B,win10系统应用程序无法正常启动0x000007b的解决办法
- [rust学习笔记]错误处理
- 使用UltraISO软碟通离线安装Centos8.3.2011过程中遇到的问题
- LCD液晶显示屏工作原理
- java试题库管理系统源代码_Java试题库管理源代码
热门文章
- Wannafly模拟赛2: A. Contest(Cdq分治)
- bzoj 3517: 翻硬币
- quartus仿真27:JK触发器构成的同步十进制可逆计数器(分析)
- matlab简单分析矩阵乘法——一阶行向量乘一阶列向量
- 贺利坚老师汇编课程57笔记:CMP和JXXX配合实现条件转移指令if
- 贺利坚老师汇编课程28笔记:在代码段使用数据加个标号start
- AD19调用器件封装时报错Access violation at address 0000000141A9EDD4 in module 'IntegratedLibrary.DLL'.
- java cookie 永久_java web中cookie的永久创建与撤销
- 板邓:wordpress标签调用函数大全
- squid不能启动问题及解决方法