zoukankan      html  css  js  c++  java
  • 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托管地址(代码会不定期更新,敬请关注)        ==|
    =======================================================


  • 相关阅读:
    POJ 2135 Farm Tour(最小费用最大流,变形)
    HDU 1503 Advanced Fruits (LCS,变形)
    HDU Senior's Gun (水题)
    POJ 3648 Wedding (2-SAT,经典)
    HDU 3549 Flow Problem 流问题(最大流,入门)
    解决在eclipse中导入项目名称已存在的有关问题
    如何将js导入时的小红叉去掉
    servlet传值到servlet传值问题
    转发重定向的用法
    parameter与attribute的使用场合(转载自草原和大树)
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082074.html
Copyright © 2011-2022 走看看