IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【开发记录】基于C++,使用QT+VS编写软件 -> 正文阅读

[C++知识库]【开发记录】基于C++,使用QT+VS编写软件

本文主要用来记录一下自己用C++及QT自己开发软件的经过。

一、背景

开发背景,是针对公司目前外部采购的零部件,开发一个生成料号的系统。因为物料编号有一个统一的模板(格式),而且不能重复。

我的软件就是避免大家手动填写表格造成重复及格式混乱的问题。

二、思路

我的想法就是通过QT编写一个ui界面,界面根据料号格式的需求,让大家按需填写。填写完成后生成对应的物料编号,并保存在一个数据库中。如果重复 or 格式错误则拒绝保存。

关于数据库,最初的想法使用MySQL,比较高大上。奈何本人不会……恰巧大家都有公司统一访问权限的公盘,那么思路二,就是料号都用csv格式的一个文件保存在公盘中。类似于一个本地局域网的“数据库”。当然这样也存在问题,后面再说。

三、开工

有了思路,就开始编写工作。

第一步,就是可行性的问题,因为之前做过基于Python的PyQT软件,所以觉得大差不差,这个思路是走得通的;

第二步,配置环境。首先安装了常用的Visual Studio 2022。这是挖了一个坑。

网上查到可以利用VS的QT插件来编写代码,VS的体验要比QCreator好得多。于是直接下载了QT的插件。目前都很顺利。

直到安装QT,我首先下载了QT5.22版本。安装很久,而且安装了很多没用的模块(比如安卓模块等),安装好后发现找不到编译器和调试器。搜索了很久无果。最后毅然卸载,安装了新的QT6.3.1,问题迎刃而解。

第三步,开始开发。首先使用QT的designer,拖动并规划了一个大致的ui界面。然后使用VS的QT插件对生成的QT的.pro文件进行了转换。快速学习了一下转化后的文件,随后开始编写具体功能的代码。

之前实习写PyQt的软件,每天的工作没有记录,修改也不记录。最后复盘起来难度很大。这次尝试记录一份开发日志文件,同时针对每一次大的的修改做到:①添加代码备注,包括修改日期和修改原因;②大修改之前,将当前的整个工程备份。这样就不怕后期因为手欠而导致前功尽弃的状况。

贴上自己的开发日志:

2022.7.11
完成UI界面设计
2022.7.12
完成UI界面功能绑定
2022.7.13
完成基本软件功能开发(V1.0版本),可以实现用户自定义料号,实时生成,保存在本地csv文件中。
保存可以实现避免重复

优化方向:
1.文本框限制用户的输入内容,如一位字母的供应商代号处则仅可输入一位字母;(7.14完成一半,目前只能限制输入一位)(7.14实现无法输入数字,但对于汉字暂时不能过滤。【考虑Unicode编码的正则表达】)
2.提示文本不显示在输入框中,而是鼠标悬停显示;(7.14已实现)
3.界面添加帮助按钮,点击按钮出现基本操作提示。 (7.14已实现)
4.部署客户端,规定用户需要通过浏览获取到XXX.CVS文件的地址。(7.15已实现)

2022.7.14
优化:保存料号成功有用户提示,生成错误料号及料号重复会有错误提示。
Debug, 针错误料号的保存逻辑进行了调整。
优化方向:
1.多个textEdit之间实现tab切换。(7.14已实现)
2.帮助提示框可以变成非模态的,方便用户操作(存在内存泄漏风险? 放弃)
2022.7.14 V1.1版


2022.7.15
优化方向:
初次使用提示用户,选取csv文件地址。(基于浏览本地文件功能实现后) (7.15已实现)



------------------------------------------
开发问题点记录:
1.如何设置使得textEdit将tab键按下视为切换焦点而不是输入?
2.如何判断重复?
3.设置文本框显示提示符以及鼠标悬停显示提示字符;
4.设置TextEdit仅能输入一个字母

这里针对开发问题进行记录解答:

问题1:如何设置使得textEdit将tab键按下视为切换焦点而不是输入?

分析:之所以存在这个问题,是因为我想实现通过Tab键切换不同的控件,结果发现使用Tab键后会输入一个制表符(大大空格)。网上百度了许多办法都不管用。

A:学会查看QT的官方文档,有个很简单的方法,setTabChangesFocus(true),功能如其名,设置即可。:

问题2:如何判断重复?

分析:问题产生是因为我将所有的料号都push到一个QStringList中,如果通过遍历,只能实现遍历到的当前元素与目标元素对比。无法做到一一对比。

A:还是QT的官方文档救了我,只需要使用QStringList的contains(目标元素)的方式即可。返回一个bool值的结果。

问题3:设置文本框显示提示符以及鼠标悬停显示提示字符

分析:这个是我的改进功能,为了方便用户。

A:如果文本框中显示灰色的提示字符【setPlaceholderText("想要显示的提示内容")】,用户输入内容后消失的方式,存在的问题是有些很短的文本框(只需输入一个字符的)却存在很长的说明文字,导致显示不完整。

而鼠标悬停显示说明文字的方式就更美观。【setToolTip("想要显示的提示内容")】

问题4:设置TextEdit仅能输入一个字母、限制输入长度。

分析:我有一个文本框,只允许输入一位字母。

A:解决方法是使用正则表达,QT的正则表达是QRegularExpression。

    QString text = qTextEdit->toPlainText();
    QRegularExpression re("[0-9]"); // problem marked: 目前只能排除数字 // 正则表达
    QRegularExpressionMatch match = re.match(text);
    if (match.hasMatch())
    {
        ui->SMtextEdit->clear();
    }

当然,目前只实现了不能输入数字,如何排除汉字、中英文标点、空白字符?还需要添加,其实就是正则表达还没学透。后续要继续优化。

四、结果展示

有涉及到保密的内容用蓝笔涂抹了

软件启动,提示用户首先配置CSV(保存料号)的地址。?

下拉框中针对不同的材料种类进行选择,无需一边查看文档,一边填写。?

?

一个简单的帮助按钮,用户点击可以获得帮助。??

点击配置CSV地址按钮,用户需要找到自己公盘的csv文件所在地。?

?

如果用户点击取消或者没有点击配置csv地址按钮,点击保存料号会弹出警告窗口。?

?

用户输入了对应的料号,点击生成料号,可以在软件底部预览。?

?

确认料号无误,点击保存至本地,即可将生成的料号写入csv文件中。?

?

如果用户未填写内容,点击生成料号按钮会弹出错误窗口。?

如果用户生成了重复的料号,点击保存按钮会弹出错误窗口。?

?

这是最终保存在本地的料号展示。?

?五、总结

这是自己第一次从一个一句话的需求产出一个软件。

一定要做好开发的规划;

一定要做好日志文件的记录;

一定要做好软件版本更迭的记录。

开发完成后自己可以多测测bug,模拟用户的各种操作(正确的or错误的);

善用QT官方文档,善用baidu,善用qDebug();

最后,文件都保存在本地csv,万一有人删除了怎么办?万一有人恶意修改了怎么办?

后期要解决这个问题。

Anyway, 每天进步一点点!

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:02:42  更:2022-07-17 16:05:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 17:39:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码