折腾开发环境的一天

一直使用 Visual Studio Code 来将就着阅读 Qt 源码,至于体验也只能说是将就着能看,跳转和调试功能基本处于停摆状态。之前很少使用 Qt Creator,大多使用 Visual Studio 开发 Qt 项目,因为在接触 Qt 之前,已使用 VS 多年,VS 也可以满足 Qt 项目开发的需求,何况 Qt 对我而言更多的只是一个 UI 库,重心也没有全部在 Qt 上面,所以也没有动力去花时间熟悉另一个 IDE 了。 今日心血来潮,想折腾一下 Qt Creator,后面用它来看 Qt 源码也许会方便些。 我想虽然 Qt6 已经改用 CMakeList 管理源码,但 Qt5 的源码依然使用的是 QMake,并提供了 Qt Creator 项目文件,使用 Qt Creator 来阅读 Qt5 源码也许会更加便利。

编程基础

C99柔性数组

在讲述柔性数组(Flexible Array)之前,首先要介绍一下不完整类型 (Incomplete Type)。不完全类型是暂时没有完全定义好的类型,缺乏足够的信息(例如长度、类型)去描述一个完整的类型。在C/C++中不完全类型有三种不同形式:void、未指定长度的数组以及具有非指定内容的结构和类。

C++语言

了解数字证书

打开任何一个数字证书售卖网站都可以看到它们通常将数字证书分为两个大类:SSL证书和数字签名证书。 SSL证书的主要作用是对网站进行身份验证和传输数据加密; 数字签名主要用于验证信息的真实性和完整性,根据使用场景的不同大致分为如下几类: 对客户端程序(.exe、.dll、.sys等文件)签名的代码签名证书。 对PDF等文档签名的文档签名证书。 对电子邮件及其附件签名和加密的邮件安全证书。

项目管理

玩转Qt 2D绘图之仪表盘实例

在前面的《玩转 Qt 2D 绘图》系列文章中,已经介绍了 2D 绘图中常用的知识,本文主要通过一个汽车仪表盘的实例来综合应用前面所介绍知识点,并且还介绍了一些 Qt 绘图的常用技巧。 相关文章: 玩转Qt 2D绘图之坐标系 玩转Qt 2D绘图之画家的工具 玩转Qt 2D绘图之画家

Qt

互联网的黑话

对于黑话我是拒绝的,但在这个圈子混,又不得不懂一些黑话,以防产生沟通障碍。关键时候说一两句黑话似乎还能显得有B格。 下面是在网上收集的一些黑话,进行了稍许整理,仅供娱乐,请勿当真。 名词解释 PM: 互联网产品经理,是互联网公司中的一种职能,负责互联...

杂念

建立专属的账号密码体系

在日常生活中,我们不仅需要记忆6位数字的银行卡密码,还需要记忆各式各样网站和应用的账号密码,可能我们自己也不记得曾经注册过多少个账号。账号和密码如此繁多,管理这些账号和密码,也是一个让人头疼的问题。 最原始的方法是将密码写纸上,放在一个安全的地方,但纸张存在丢失、损坏的风险,而且不方便存取。 改进版则是将纸张电子化,如 Excel,并辅以云盘实现多端同步,这样虽然存取便利性上有一定的改善,但安全性却降低了很多,如果云盘没有历史版本功能,在编辑时稍有失误,可能导致密码全部丢失,另外如果云盘密码泄露、电脑中毒或系统损坏,也可能导致密码泄露或丢失。如果某一天云盘软件突然倒闭了,该怎么办呢? 目前已经有很多账号密码管理软件,来帮助人们管理账号和密码,如 1Password、KeePass 等,但它们也或多或少存在一些缺陷:

爱折腾

谈一谈Qt的布局技巧

1. 手动拖放通过在 Qt Designer 中手动拖放控件,可以快速实现界面布局,如下图所示: 这种方式对初学者非常友好,可以快速上手开发一个界面,增加成就感。但我们需要知道,拖放布局不是 Qt 布局的全部,这种方式仅适合简单的界面布局。

Qt

C++异常之我所见

C++异常所带来的问题当我们在代码中写下一行 throw 语句时,我们就此埋下了一个祸根,从此以后,在该函数调用链中,必须至少有一个调用者需要提供相应的异常捕获,否则一旦异常被抛出,程序就会异常终止。 例如,函数 f() 调用 g(),而 g() 又调用 h(),并且 h() 抛出一个异常,则 g() 和 f()中必须有一个提供了相应的异常捕获,否则程序会异常终止。 由于异常会使代码的执行流程从任意地方跳出,因此我们还需要付出大量的精力来编写正确的异常安全代码,例如使用 RAII(资源获取即初始化)来保证资源正确释放。 如下面的示例,虽然我们在函数 f() 中捕获了异常,避免了程序的异常终止,但异常却中断了函数 g() 的正常执行流程,导致对象 m 没有被正确释放,从而出现了资源泄露。这种情况可能还会变相地增加了程序的调试难度。

C++语言
12323