版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/guodongxiaren/article/details/26046543

执行效果

project文件夹

Counter
|--- Counter.pro
|--- 头文件
|      |--- aboutdialog.h
|      `--- mainwindow.h
|--- 源文件
|      |--- aboutdialog.cpp
|      |--- main.cpp
|      `--- mainwindow.cpp
`--- UI文件
       |--- aboutdialog.ui
       `--- mainwindow.ui

总结

项目

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

吐槽

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

从电工实习那周開始吧,反正那时闲着也是闲着。就開始做了这个计算器。大概两周多一点的时间。眼下已知的bug所有修复了。

。未知的bug等待时间检验吧。。

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

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

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

这个是使用的C++的Qt框架编的。毕竟Qt跨平台,Linux。Windows都能用。

还有一个著名的C++的GUI框架MFC。我并不喜欢。

MFC是微软做的,也是我们下学期Windows程序设计这门选修课要教的东西。因此我没有选Windows这门选修课。我并非为了混学分而选课的人。。

时间宝贵,怎能浪费。。

个人感觉:MFC太复杂,尽管是C++,但面向过程的东西太多,太多结构体,还有太多微软自己定义的宏。

并且类名,宏名的都是非常长的名字。并且不是可读性强的名称,记起来和敲起来都甚为不便。还有MFC的设计哲学,并不会是开发人员对面向对象的概念有多大提高。

而是让开发人员纠结在非常多细枝末节上。。毕竟MFC在90年代初期就出现了,那时候C++标准还未成熟,面向对象软件project的理论也不成熟。并且那时候设计模式的理论貌似还未提出或者刚刚提出。所以导致了MFC的先天畸形。所以进入两千年后,微软对MFC的更新放慢了。后来干脆就主推C#的winform、WPF了。

================= 本 项 目 文 章 及 源 码 链 接===============
|== Qt计算器开发(一):后缀表达式实现完整数学表达式的计算  ==|
|== Qt计算器开发(二):信号槽实现数学表达式合法性检查         ==|
|== Qt计算器开发(三):执行效果及项目总结                         ==|
|== Qt计算器源代码下载(免积分)                                                   ==|
|== Qt计算器GitHub托管地址(代码会不定期更新,敬请关注)        ==|
=======================================================

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

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

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  2. Qt+ECharts开发笔记(三):ECharts的柱状图介绍、基础使用和Qt封装Demo

    前言   上一篇成功是EChart随着Qt窗口变化而变化,本篇将开始正式介绍柱状图介绍.基础使用,并将其封装一层Qt.  本篇的demo实现了隐藏js代码的方式,实现了一个条形图的基本交互方式,即Qt ...

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

    maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Java项目 1.1.创建Java Project 1.使用mvn archet ...

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

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4240930.html 感谢! maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使 ...

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

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...

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

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. iOS开发--iOS及Mac开源项目和学习资料

    文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...

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

    原文网址:http://www.cnblogs.com/smyhvae/p/4456420.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...

  9. QT +go 开发 GUI程序

      ,转载 https://blog.csdn.net/lanbery/article/details/81745611 如果你是一个墨守成规的coding,请移步其他内容,这部分内容可能不适合你.如 ...

随机推荐

  1. 将百度编辑器ueditor用在easyui中

    又一个自己想深爱却一直被拖着的对象--百度编辑器(ueditor) 但终究逃不过再次把它"供奉"起来的宿命,这不今天又得好好研究一下它的使用方法,以免自己今后再次使用时的各种不便- ...

  2. 在mysql存储过程中拼接sql解决in的字段类型不匹配问题

    一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数.该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件. begin DECLA ...

  3. python框架---->APScheduler的使用

    这里介绍一下python中关于定时器的一些使用,包括原生的sche包和第三方框架APScheduler的实现.流年未亡,夏日已尽.种花的人变成了看花的人,看花的人变成了葬花的人. python中的sc ...

  4. namespace main

    c++程序运行的入口是::main 如果把main放到某个命名空间中,则系统就无法找到入口. 所以就有了为了测试功能的tools和test,其中没有命名空间.

  5. 云计算设计模式(二十三)——Throttling节流模式

    云计算设计模式(二十三)——Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这种模式可以允许系统继续运行并满足服务水平协议,即使当增加需求的资源放置一 ...

  6. iPhone X 上删除白条

    方案一:纯色背景的情况下,解决方案就是background-color在您的body代码上设置属性: 方案二:视口入,viewport-fit=cover: <meta name="v ...

  7. POJ 3273 Monthly Expense(二分答案)

    Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36628 Accepted: 13620 Des ...

  8. 关于数据库DB负载均衡的初步研究(二)

    负载均衡: 是什么:有一组服务器由路由器联系在一起,各个节点相互协作,共同负载,均衡压力. 实现原理:应用程序与DB之间有个中央控制台服务器,根据负载均衡策略决定访问哪一台DB服务器. DB服务器:读 ...

  9. C# IEqualityComparer 去重

    1.去除list里某重复字段值的数据(相当于group by) public class CorrController { //方法 public void DoGet() { List<tes ...

  10. H3C系列之三层交换机文件管理

    笔者本篇文章所用h3c交换机的型号为三层交换机S3600-28TP-SI 对于文件的操作一般都在用户视图下操作,常见的有如下一些操作: 1.查看操作,常用的查看操作可以使用如下命令: <H3C& ...