【QT】QT从零入门教程(一):图像处理自编软件
自说自话
寒假有了闲暇时间,于是决定做一个实际点的项目。在此之前,一直想做一款软件,把自己所学过的知识融汇进去,以软件界面的形式呈现出来。此前接触过OpenCV,学C++也有一段时间了,正好想从零入门学QT,于是思路打开,就做一个图像处理方向的软件。
这次QT自学,一改以往先看书看视频的习惯,在构思了软件的大致界面和大体功能后,直接上手。不得不说,QT比MFC简洁方便很多,入手也比较容易。遇到问题就查找资料查阅博客,中途当然也遇到了不少坎,要么攻克要么绕路解决,总体也还算是顺利。
历时两个多星期(20天),总算是完成了,虽然有些预计的功能比如多线程没实现,不过还是结项了。写博客教程,一是方便自己日后翻阅,二来也是总结分享自己的QT自学经验,便于大家学习。由于从零入门,自学时间短,有些知识点可能总结不到位或者有误,还望诸位热心提出。
本教程不定期更新,也不知何时结束,尽量从最开始简单的按钮写到最后的打包方法,还原编写软件时的思路。这个软件也比较简单,只是把一些经验分享出来,适合初学者。
附上软件下载链接: https://github.com/HuangBingjian/ImageProcessing/
界面
工具栏、菜单栏
文件工具栏中是常见的新建(new)、打开(open)、保存(save)、撤销(undo)、重做(redo),实现方法将会在后续教程中给出。
绘图工具栏可以设置画笔的线宽及颜色,其中设置画笔颜色用的是QT自带的QColorDialog。
当载入的图像过大时,图像窗口虽然会出现滚动条,但是不方便查看,所以设置了“铺满窗口”和“自适应窗口”两个按钮,会根据窗口大小自动调节图像的显示效果。
一键换肤是切换QSS,默认的白色样式是setStyleSheet(0)即不加QSS,而黑色皮肤是采用Github中JetBrains Dracula设计的QSS样式表,自己有稍作修改。
文件菜单是新建、打开、保存、另存为、关闭,有相应的快捷按键。
编辑菜单有撤销、重做、全屏显示和退出全屏。全屏显示是指没有标题栏即“图像处理自编软件 by 笔尖”那一栏,当切换为黑色皮肤时全屏显示更协调。
视图菜单监控各个窗口的状态——显示或隐藏。通过点击菜单可以切换窗口状态, 免得关闭窗口后不知从何找起。至于图像窗口,由于该软件只能处理单张图像,不支持同时对多张图像进行处理,所以图像窗口一直保持显示状态,如果隐藏那还怎么实时查看处理结果…
帮助窗口的话,就是软件的基本信息以及基本设置。
功能窗口
其他窗口
工具箱里是简单的图形绘制工具,有钢笔、线条、圆形、椭圆、三角形、菱形、矩形、正方形、六边形。点击即可绘制,支持切换,再次点击同个按钮可以退出绘制模式。
输出窗口显示的是图像的操作记录,便于了解之前有哪些操作以及目前处于什么状态。
属性窗口是对输入图像的路径、长度、宽度、深度、是否灰度进行检测辨别,直观显示图像的基本信息。
【QT】QT从零入门教程(一):图像处理自编软件相关推荐
- 【QT】QT从零入门教程(十一):QT自定义窗口
首先是借鉴了网上的博客,实现无边框,自由拖动的自定义窗口效果. #ifndef CUSTOMWINDOW_H #define CUSTOMWINDOW_H #include <QtGui&g ...
- 【QT】QT从零入门教程(十):QT布局管理QLayout
介绍完常用控件之后,我们发现,之前控件的大小位置都是通过resize().move()来设置的,很不方便,当你修改某个控件的位置时,其他控件也需要进行调整,容易出现牵一发而动全身的情况. QT ...
- 【QT】QT从零入门教程(八):QT常用控件 [QLabel、QPushButton、QLineEdit、QTextEdit]
本节介绍一些常用的控件,是在"图像处理自编软件"中用到的几种,包括QLabel.QPushButton.QLineEdit.QTextEdit.QSlider.QSpinBox ...
- 【QT】QT从零入门教程(四):菜单栏、工具栏、状态栏
菜单栏.工具栏.任务栏是软件中常见的组件,本节将会讲解如何创建菜单栏并生成一级菜单.二级菜单,如何在工具栏中添加图标和控件,如何在任务栏中显示文本. 标题及图标 // 标题大小 setWindow ...
- 【QT】QT从零入门教程(六):QDockWidget停靠窗口
QDockWidget 上节我们引出了QDockWidget的概念,这节进行讲解并加以引用. 常用函数: 1.addDockWidget:添加停靠控件,用于指定或更改停靠控件的位置以及方向 ...
- 【QT】QT从零入门教程(七):图像适应窗口
在第5节里,我们讲解了初始化图像框QLabel的方法,用于显示图像.在第6节里,运用QDockWidget实现了基本窗口布局.在显示图像时,如果打开比QLabel大的图像,会自动出现滚动条.这样能 ...
- 【QT】QT从零入门教程(十七):QT+OpenCV+VS 打包exe
1.在Debug模式下运行程序,生成exe. 2.在桌面上新建文件夹,名字最好为英文或数字,将项目生成的exe及所需资源文件夹(如Image文件夹)拷贝到文件夹中,在文件夹中新建一个txt,F:\QT ...
- 【QT】QT从零入门教程(十六):QSS样式表
实现一个软件的基本界面和功能后,接下来要做的就是美化界面,这就用到了QSS样式表. QSS包含了一个样式规则序列,一个样式规则由一个选择器和声明组成,选择器指定哪些部件由规则影响,声明指定哪些 ...
- 【QT】QT从零入门教程(十五):QImage和Mat的转换
QT处理图像用的是QImage类,而OpenCV处理图像则是使用cv::Mat类,如果要在QT中运用OpenCV,那就需要进行QImage和Mat的相互转换. // cv::Mat转换成QImag ...
最新文章
- 如何避免JSP文件中的Java代码?
- newLisp使用初步
- World Final 2012
- 【Python】Pandas基础:结构化数据处理
- 阿里云加入 OCI,共建容器开放标准
- mysql连接数紧张_Mysql 查看连接数,状态,最大并发数
- firefox 接受post 不完整_HTTP中GET与POST的区别,99 %的人都理解错了
- python之美_Python之美[从菜鸟到高手]--生成器之全景分析
- Android SDK Manager 更新慢解决办法
- canvas 在线画图
- linux7yum安装mysql,CentOS7 使用yum安装mysql
- putty如何登陆oracle,利用putty的SSH tunnel连接Oracle
- slam无人车清除地图残影
- Linux sogou input method
- 永洪BI-相关小知识点
- 【转】华为手机logcat不出日志解决方案
- [每日100问][2011-10-06]iphone开发笔记,今天你肿了么
- uni-app - Refused to display ‘xxx‘ in a frame because an ancestor violates the following Content Sec
- 怎么在添加为知笔记编辑器/为知笔记怎么用其他编辑器编辑/为知笔记怎么才能用Word/notepad++编辑
- 【C语言循环结构题目】在屏幕上打印n行*号倒三角形(此处n为6)