- 博客(40)
- 问答 (2)
- 收藏
- 关注
原创 【Qt学习】| 如何使用QVariant存储自定义类型
QVariant提供了诸多构造函数可以非常方便地对基础数据类型(如:int double bool QString QTime QSize)进行转换,具体可在帮助文档中查阅。QVariant是Qt框架中的一个通用数据类型,可以存储多种类型的数据,主要作用是提供一种类型安全的方式来存储和传递不同类型的数据,而不需要显示地指定数据类型。qt中自定义数据类型需要使用Q_DECLARE_METATYPE这个宏进行声明,然后才能使用。如何对自定义类型的数据进行转换呢?
2025-02-22 21:48:43
249
原创 如何解决勾选“使用 Unicode UTF-8 提供全球语言支持 (Beta)” 选项引起的乱码问题
启用“使用UnicodeUTF-8提供全球语言支持(Beta)”选项后,**Windows会尝试将所有非Unicode程序的字符编码解释为UTF-8**。
2025-01-17 17:44:09
2397
原创 【Qt学习】| QByteArray使用详解
QByteArray 是 Qt 框架中的一个类,用于处理字节数组。它可以存储和操作二进制数据或文本数据。本文在介绍时只给出了部分函数,其他同名重载函数可参考Qt帮助文档。
2024-12-08 22:55:12
1612
原创 【LeetCode】| 53. 最大子数组和
result用来记录最大子数组的和,dummyResult是一个试探性的中间结果,它的作用是:当下一个遇到负数时,则只对dummyResult进行求和,result仍维持不变,待dummyResult + nums[i] > result或nums[i] > result时,才对result进行更新。另外,我也看了下贪心算法的其他实现,下面这个解答我认为思路非常清爽!
2024-12-08 14:43:18
244
原创 【Qt学习】| Qt事件之QEvent::ApplicationStateChange、QEvent::WindowActivate
事件在应用程序的状态发生变化时触发。例如,当应用程序从前台切换到后台,或者从后台切换到前台时,会触发这个事件。这个事件通常用于处理应用程序级别的状态变化。事件在窗口被激活时触发。当一个窗口从非活动状态变为活动状态时,会触发这个事件。这个事件通常用于处理窗口级别的状态变化。
2024-12-05 18:54:48
627
原创 【软件国产化】| Windows和Linux下文件名后缀是否区分大小写
这是由Linux和Windows的系统差异造成的:在Windows系统下,文件的后缀名是不区分大小写的;在Linux系统下,文件的后缀名是严格区分大小写的。
2024-11-27 18:08:42
470
原创 QScrollBar问题:水平滚动条左右两端的箭头不显示如何解决
今天在进行国产化软件移植的过程中遇到了一个好诡异的问题,如下图所示:垂直滚动条上下两端可以正常显示箭头,但是水平滚动条左右两端无法显示箭头,虽然无法显示,当鼠标点击到箭头所在区域时功能又是生效的。
2024-11-26 18:57:48
471
原创 【Qt学习】| Qt中的坐标系
代码示例实现的功能是,主窗口移动至(100,100),子窗口移动至(50,50),其中,btnA为主窗口的子窗口,btnB为btnA的子窗口,btnC为btnB的子窗口。可见,主窗口的位置是由屏幕坐标系确定的,其余子窗口的位置均是由其父窗口坐标系确定的。坐标原点为窗口左上角,x坐标值向右增加,y坐标值向下增加。图中共有三个窗口:主窗口、子窗口、孙子窗口。孙子窗口的位置由此类推。其中,主窗口的位置由。
2024-08-25 22:59:06
434
原创 【Qt学习】| QMainWindow
独立窗口,主窗口,不可内嵌,由QWidget派生独特性:可以包含菜单栏、工具栏、状态栏菜单栏和状态栏最多只能有一个,工具栏可以有多个先写这么多,后续学习了再补充。qt基础知识持续学习中,我们一起学习吧!
2024-08-25 21:42:45
201
原创 【Qt学习】| QDialog
在这个例子中,对话框窗口的创建在主窗口的构造函数中,运行后会先显示对话框,当对话框关闭时才会显示主窗口。非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。对话框在主窗口的下层,需要把主窗口移走才能看到。qt基础知识持续学习中,我们一起学习吧!,一般查找替换窗口为非模态窗口。(2)不指定父对象时。
2024-08-25 17:50:20
415
原创 【软件国产化】CString类中函数的标准化改造
软件移植势必涉及到对原有类的重构,抽取出linux和windows下能够通用的函数,在抽取过程中免不了对一些windowsAPI/类进行标准化改造,最近改造了CString的相关函数,在此记录。总结:使用std::wstring的substr()来提取子字符串。总结:使用swprintf_s来格式化字符串。2.CString的Right函数。
2024-08-22 15:31:55
191
原创 职级答辩随想
当被分配到一个活儿的时候,我觉得第一步是先思考这个活能不能不干,如果要干需要明白为什么干,解决完为什么干之后,要怎么干,为这么这么干。在做ppt的时候我意识到这一点其实是很重要的,当下是你对这个任务项了解最清楚的时候,完全可以将开发过程中。第三点是:写不出来的东西大概率是讲不出来的。第一点是:包括我在内的很多开发人员其实工作做的很漂亮,在工作中付出了相当多的努力,但是无法很好的将自己做的事情展现出来,为什么?抛开结果不谈,准备ppt的过程让我思考了很多平时没有思考的东西,也加深了我对答辩这件事情的认识。
2024-08-08 16:55:08
143
原创 【Qt学习】| 创建第一个Qt项目
在弹出的对话框中选择【Application】->【Qt Widgets Application】,点击【Choose】【Translation File】这一项是实现Qt工程国际化的,没有这个需求的话直接【下一步】即可。根据项目需求确定是否需要选择版本管理工具,然后点击【完成】输入项目名称、选择项目路径后,点击【下一步】默认选择qmake即可,点击【下一步】选择【文件】->【新建文件或项目】确认窗口类名称,点击【下一步】选择编译套件,点击【下一步】以下内容介绍如何创建一个。至此,项目创建成功。
2024-07-14 17:43:52
259
原创 【Qt学习】| QtCreator简要介绍
可以根据菜单栏将编译、调试相关的快捷键记住,真正开发起来还是用快捷键方便。使用的QT版本为:Qt5.14.2,以下介绍均基于Qt5.14.2展开。不同版本可能略有差异。(1)侧边栏共分为上下两部分,上半部分包括:欢迎、编辑、设计、Debug、项目、帮助。:Qt官方文档,注意要在下拉框选择“索引”后再进行查找。:Projects——打开项目、新建项目。示例——官方提供的示例程序,点击即可查看。:查看项目文件列表,选中文件后可进行编辑。:可设置文件生成目录,选择编译套件。:调试窗口,可查看堆栈、跟踪变量。
2024-07-09 22:18:27
320
原创 【Qt学习】| Qt中的模块
在QtCreator的帮助文档中根据索引搜索“All Modules”,即可搜索到所有模块。在编写程序时,如果用到了某些类,那么要确保这些类对应的模块已经加载到项目(.pro)中。(4)技术预览模块——Technology Preview Features。(3)增值模块——Value-Add Modules。(1)Qt基本模块——Qt Essentials。(2)Qt附加模块——Qt Add-Ons。(5)Qt工具——Qt Tools。如下图所示为Qt中的基本模块,3.Qt基本模块简要介绍。
2024-07-07 18:29:15
554
原创 【Qt学习】| Qt的特点介绍
是一个跨平台的C++应用程序开发框架几乎支持所有的平台,可用于桌面程序开发及嵌入式开发有属于自己的事件处理机制——信号槽机制Qt是标准C++的拓展,C++的语法在Qt中都是支持的QT的良好的封装机制使得它的模块化程度非常高,可重用性较好广泛应用于开发GUI程序,也可用于开发非GUI程序GUI:全称是Graphical User Interface,图形化界面或图形用户接口有丰富的APIQT包括多达250个以上的C++类可以处理正则表达式支持2D/3D图形
2024-07-07 16:42:49
159
原创 【软件国产化】| 基于状态栏移植的经验总结
最近工作重心转移到了从Windows到Linux的跨平台移植,经过这段时间的探索和学习,成功地完成了状态栏的移植!移植不是从0到1的过程,移植是将相同的功能从一个平台转移到另外一个平台上,所以代码复用是很有必要的。由于被移植的桌面软件之前是基于MFC实现的,所以UI实现肯定是Windows和Linux各一份咯。以这次移植的状态栏为例,通过继承QStatusBar实现自定义状态栏,完成界面和数据的串接工作。在进行代码复用之前,有必要先清一波冗余代码,不然移垃圾也挺费劲儿的不是。在此将移植方法简单记录一下~
2024-07-02 10:21:32
271
原创 QT学习总结
如果你的项目使用了QMainWindow、QWidget、QPushButton等类,那么你需要在.pro文件中添加QT += widgets。如果你没有添加这行代码,你的项目可能会因为找不到这些类的定义而无法编译。,你告诉qmake你的项目需要链接到widgets模块。qmake会确保在生成Makefile或其他构建系统的项目文件时,包含了正确的库和头文件路径。这行代码的意思是,你的项目需要使用到Qt的widgets模块。在Qt的.pro项目文件中,当你在.pro文件中写。
2024-06-11 10:04:55
143
原创 #import “MSWORD.OLB“的编译问题
系统是win11专业版,VS版本是2022。机器上之前装了office2021和wps,后面都给卸了,装上了office2016。最后解决办法是:在安装office2016的基础上安装了office 2007。error C4772: #import 引用了缺少的类型库中的类型;为什么编过了,我也不明白~
2024-05-16 18:29:52
266
原创 安装office 2016 错误代码0-1036
原因是之前的office版本卸载不彻底造成的。最后我通过删除注册表的方式解决了这个问题。参考链接为:https://zhuanlan.zhihu.com/p/553243789。
2024-05-15 15:58:28
1410
原创 【LeetCode】| 367.有效的完全平方数
367.有效的完全平方数代码class Solution {public: bool isPerfectSquare(int num) { int left = 0; int right = num; while(left <= right) { int middle = left + (right - left) / 2; if((long)middle * middle
2022-01-20 22:02:45
308
1
原创 【LeetCode】| 26. 删除有序数组中的重复项
26. 删除有序数组中的重复项代码class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return 0; int slowIndex = 0; int fastIndex = 0; while(fastIndex < nums.size())
2022-01-16 22:24:17
178
1
原创 【LeetCode】| 27 移除元素
快指针遍历整个数组,遇到val也会往前走,慢指针会在val处停下来,当快指针走到不是val的地方(即找到了替换val的值),慢指针才开始继续走,边走边赋值。这道题采用双指针法,也叫快慢指针法来解决。时间复杂度:O(n)空间复杂度:O(1)
2022-01-15 16:16:20
205
1
原创 【LeetCode】| 69Sqrt(x)
69.Sqrt(x)给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留整数部分 ,小数部分将被舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例1输入:x = 4输出:2示例2输入:x = 8输出:2解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。提示0<=x<=231−1 0 <= x <= 2^{31} - 1 0&l
2021-12-25 16:23:59
716
1
原创 【LeetCode】| 704 二分查找
704.二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示1.你可以假设
2021-12-19 16:02:00
249
1
原创 static关键字
static全局变量与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量与静态全局变量相同点:静态存储方式不同点:作用域。普通局部变量的作用域是整个源程序,当一个源程序由多个文件组成时,普通的全局变量在各个源文件中都是有效的。静态全局变量的作用域是定义该变量的源文件,在同一源程序的其它源文件中不能使用它。...
2018-09-24 11:53:56
145
1
空空如也
CCombobox如何实现下拉框长度自适应
2022-04-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人