打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt5+VS2015编程实例:数值进制转换小工具

搞硬件开发的小伙伴们,对于数值不同进制之间的转换是经常用到的一个小功能,如输入一个十进制整数,要求能够迅速得到其二进制、十六进制的数值等。

在这篇文章中,给大家演示下如何使用Qt5.9界面库,在VS2015的IDE编程环境中,通过代码来简单实现这样的一个小工具例子吧。

1、实例说明

软件运行界面如图所示:


软件主界面包括左右两部分,左边是一个工具栏,右边是主显示窗口,通过在工具栏中选择不同的选项,在主窗口显示相应的内容,下方是一个状态栏。本例较为简单,在工具栏上仅有三个选项,点击“退出程序”按钮时退出整个程序,点击“欢迎使用”按钮时显示数值进制转换的操作窗口,点击“软件说明”按钮时则显示软件的辅助说明信息,如下图所示:


下面说下这个例子的详细编程步骤。

2、实例实现过程

(1) 创建Qt项目工程

打开Visual Sudio 2015,选择文件菜单,新建一个的Qt项目,项目类型选择Qt GUI Application,入项目名称为MyDemo。

(2) 编辑界面文件

项目创建完毕后,在方案资源管理器中双击“MyWnd.ui”,自动在Qt设计师中打开该界面文件,编辑完成后的主界面如下图所示:


该界面中的对象及布局情况如下图所示,主窗口MyWnd其基类为QMainWindow,主窗口上包括中心部件(centralWidget)、工具栏(mainToolBar)及状态栏(statasBar)三部分。


其中,中心部件(centralWidget)使用垂直布局,上面为一QLabel部件,下面为一QStackedWidget部件,在QStackedWidget部件中创建两个页面,分别显示主操作页面及软件说明页面。两个页面(page及page_2)的部件及布局情况从上图中可以清晰的看出来。

工具栏上放置三个按钮,其功能可由动作编辑器中实现,如下图所示:


需要的图标资源可在资源浏览器中编辑完成,如下图所示:


退出按钮的功能直接在信号与槽编辑器中完成,如下图所示:


(3) 代码功能实现

本例主要实现工具栏上两个按钮的切换功能(显示不同的页面)及当输入数值改变时实现实时进制转换功能,因此在“MyWnd.h”头文件中,在“private slots:”区域定义了两个槽函数分别响应这两个事件,另外,自定义了两个字符串类型的私有变量“curNumVal”和“ curNumType”分别保存当前界面上输入的数值及当前数值的类型,自定义了一个私有函数“getResult()”做进制转换功能的实现,如下图所示:


在实现文件MyWnd.cpp”中,添加信号与槽函数的关联及槽函数的具体功能实现。

其中,在构造函数中代码如下图所示:


上面代码中主要完成的功能为:变量初始化(11、12行)、工具栏上按钮的互斥设置(14-16行)、状态栏提示信息设置(17行)、数值输入的两个控件的动态属性设置(18、19行,在槽函数中用来区分事件源)及槽函数的关联(21-26行)。

函数具体实现代码如下图所示:


代码简要解释如下:

第29-34行,当点击工具栏不同按钮时实现主显示窗口的页面切换。

第36-43行,当改变数值的值或类型时实现实时进制转换功能,这儿用到了这两个控件的动态属性,用以区分当前哪个控件产生了事件。

第45-71行,数值不同进制的具体转换功能实现,并在文本框窗口上进行显示。这儿用到了比较灵活的QMap类,用以存储当前的进制名称及数值,使用QString类的toInt及setNum函数进行字符串与数值进制之间的转换。其中第65-70行使用foreach对map元素进行索引,分别转换为不同的进制,这段代码也可改写为下面的形式,实现同样的功能:


至此,项目功能就完成了,编译运行程序,在主界面上实时改变当前输入的数值或当前数值的类型,都会在显示窗口实时显示出当前数值的其它进制值。

3、总结

这个例子比较小巧简单,但涉及的内容还是比较多,如Qt的设计师的使用、工具栏/状态栏的使用、数值与字符串之间的转换、多个控制关联一个槽函数的方法等内容。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel操作技巧(3)
Excel电子表格教程
C/C++编程必备网址
Excel技巧四则
第1章 Qt概述
Excel实用技巧大全(不断更新中...)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服