Qt计算器开发(三):运行效果及项目总结

运行效果

工程目录

Counter

|--- Counter.pro

|--- 头文件

|      |--- aboutdialog.h

|      `--- mainwindow.h

|--- 源文件

|      |--- aboutdialog.cpp

|      |--- main.cpp

|      `--- mainwindow.cpp

`--- UI文件

|--- aboutdialog.ui

`--- mainwindow.ui

总结

项目

这个工程的Ui部分我是直接使用Qt designer拖出来的。不仅仅是因为方便啦,更重要的是这个一个很好的MVC思想的运用。就像Android里面用xml和java分别写界面和逻辑一样。当我们改变界面的时候,背后的实现逻辑无需修改,而当我们修改实现逻辑的时候,界面又不会受到干扰。上面的工程目录里面的aboutdialog.h和aboutdialog.cpp一句aboutdialog.ui就是一个“关于”的对话框,效果也在上面截图给出啦,没什么复杂的地方。可以使用Qt的富文本来实现里面的文字图片展示。

吐槽

这是一个入门级的Qt计算器的开发过程。在这个项目开始之前,我对Qt语法了解不多,开始去做这个浏览器完全是为了实战数据结构中的后缀表达式算法。

从电工实习那周开始吧,反正那时闲着也是闲着。就开始做了这个计算器。大概两周多一点的时间,目前已知的bug全部修复了。。未知的bug等待时间检验吧。。

在Windows和Ubuntu上都有敲过这个工程的代码,毕竟GitHub是个强大的东西,在两个系统里面做同一个工程也不难,只需git push;git pull 就可以了。

计算器本身呢,还有很多可扩展的地方,比如日期加减,进制转换,货币转换等等。不过,总之呢,应该告一段落了。

通过这个实践可以很清楚地得出一个结论:界面绝不是最重要的,界面很容易做出来,有问题百度一下,分分钟也能解决。重要的是什么?算法。这是对栈和后缀表达式的一个实战。难点就在这个算法上。目前小数点后面位数或者说精度有限。如果要实现小数点后面更多位数的计算结果,那么又会涉及到高精度的算法。没错,还是算法。毕竟C++没有Java那种“大数类”。

这个是使用的C++的Qt框架编的。毕竟Qt跨平台,Linux,Windows都能用。另一个著名的C++的GUI框架MFC,我并不喜欢。MFC是微软做的,也是我们下学期Windows程序设计这门选修课要教的东西,因此我没有选Windows这门选修课。我并不是为了混学分而选课的人。。时间宝贵,怎能浪费。。

个人感觉:MFC太复杂,虽然是C++,但面向过程的东西太多,太多结构体,还有太多微软自定义的宏。而且类名,宏名的都是很长的名字,并且不是可读性强的名称,记起来和敲起来都甚为不便。还有MFC的设计哲学,并不会是开发者对面向对象的概念有多大提高。而是让开发者纠结在很多细枝末节上。。毕竟MFC在90年代初期就出现了,那时候C++标准还未成熟,面向对象软件工程的理论也不成熟,而且那时候设计模式的理论貌似还未提出或者刚刚提出。所以导致了MFC的先天畸形。所以进入两千年后,微软对MFC的更新放慢了,后来干脆就主推C#的winform、WPF了。

================= 本 项 目 文 章 及 源 码 链 接===============

|== Qt计算器开发(一):后缀表达式实现完整数学表达式的计算  ==|

|== Qt计算器开发(二):信号槽实现数学表达式合法性检查         ==|

|== Qt计算器开发(三):运行效果及项目总结                         ==|

|== Qt计算器源码下载(免积分)                                                   ==|

|== Qt计算器GitHub托管地址(代码会不定期更新,敬请关注)        ==|

=======================================================

Qt计算器开发(三):运行效果及项目总结

时间: 2024-10-13 05:59:31

Qt计算器开发(三):运行效果及项目总结的相关文章

Qt计算器开发(二):信号槽实现数学表达式合法性检查

表达式的合法性 因为我们的计算器不是单步计算的,所以我们可以一次性输入一个长表达式.然而如果用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比如,在输入了左括号以后那么接下来,不能输入运算符.此时运算符要是不可用的状态.在输入了右括号以后不能直接输入数字,此时数字键应该是不可用状态.等等此类的. 在这里我使用了信号与槽的方式来实现.点击不同的按钮,会发展出不同的信号.在这之后的事,点击按钮本身无需考虑,这也是信号槽的良好的设计理念造成的效果,

iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

在公司做项目一直使用Storyboard,虽然有时会遇到团队合作的Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算的.在之前的博客中也提到过,团队合作使用Storyboard时,避免冲突有效的解决方法是负责UI开发的同事最好每人维护一个Storyboard, 公用的组件使用轻量级的xib或者纯代码来实现.这样不但提高了开发效率,而且可以有效的避免Storyboard的冲突.如果每个人维护一个Storyboard, 遇到冲突了就以你自己的为准就OK了. 言归正传,

Qt官方开发环境生成的exe发布方式--使用windeployqt(windeployqt是单独的程序,放在低版本qt4目录下也可以运行的)

Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe.以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 for Desktop (MinGW 4.9 32 bit),可以打开 Qt 命令行,从这

WPF触控程序开发(三)——类似IPhone相册的反弹效果

用过IPhone的都知道,IPhone相册里,当图片放大到一定程度后,手指一放,会自动缩回,移动图片超出边框后手指一放,图片也会自动缩回,整个过程非常和谐.自然.精确,那么WPF能否做到呢,答案是肯定的. 在没有现成的控件的情况下,只有自己做,你肯定想到做动画,WPF触屏开发提供了相应的功能来获取触控点的一些变化,这些变化的最佳消费者个人认为是Matrix.我们回想下做动画一般怎么做,比如给一个button做个宽度增5的动画,我们一般是定义一个DoubleAnimation,然后定义一个Sotr

?Unity 2D游戏开发教程之2D游戏的运行效果

Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑问,会在本节集中揭晓. (1)单击Unity上方,工具栏里的播放按钮,开始运行当前的游戏,默认精灵当前进入的是Idle动画状态,如图1-34所示. 图1-34  Idle状态 (2)当读者按下键盘上的左.右方向键,或者A.D键的时候,精灵会进入Walking动画状态,并且会向左或者向右移动,如图1-3

Maven学习总结(三)——使用Maven构建项目

maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Java项目 1.1.创建Java Project 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -Dinteract

Android开发之动画效果浅析

Android开发之动画效果浅析 请尊重他人的劳动成果,转载请注明出处:Android开发之动画效果浅析 程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animation.下面依次介绍一下各个动画. 1.   补间动画(Tween) Tween动画,通过对View 的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可

第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html 联系方式:[email protected] [系列] 第一次使用Android Studio时你应该知道的一切配置 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器 第一次使用Android Stu

【转载】Maven学习总结(三)——使用Maven构建项目

maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Jave项目 1.1.创建Jave Project 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -Dinteract