<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[瞌睡的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WL0616</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WL0616]]></copyright><item><title><![CDATA[【Linux】15. 详解Vim快捷操作]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/150260709</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/150260709</guid><author>WL0616</author><pubDate>Thu, 14 Aug 2025 08:22:49 +0800</pubDate><description><![CDATA[Vim编辑器常用命令总结：Vim包含命令、插入和底行三种主要模式。命令模式支持光标准确跳转（gg/G/$/^）、批量注释（:16,28s#^#//#g）、删除(dd/ndd)、复制(yy/nyy)、粘贴(p/P)、撤销(u/Ctrl+r)等操作，还能通过gg=G自动排版代码。插入模式提供多种插入方式(i/I/o/O/a/A)。底行模式(:)用于保存(:wq)、退出(:q!)等操作。Visual模式(v/V/Ctrl+v)支持文本块选择操作。熟练掌握这些命令能显著提升Vim编辑效率。]]></description><category></category></item><item><title><![CDATA[【Linux】14. 详解GDB调试]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/150260159</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/150260159</guid><author>WL0616</author><pubDate>Wed, 13 Aug 2025 08:21:28 +0800</pubDate><description><![CDATA[GDB：1. 编译要求2. 如何调试运行程序？3.设置断点4.调试命令5.Ctrl + c6.Ctrl + z7.gdb调试打印QString，打印不出来怎么解决？8.打印字符串显示不全，后面会显示...怎么解决？9.如何修改变量继续调试？10.如何调试已运行的程序？11.如何分析Core Dump文件？]]></description><category></category></item><item><title><![CDATA[【QT】Qt的随身笔记（持续更新...）]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130296740</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130296740</guid><author>WL0616</author><pubDate>Wed, 20 Sep 2023 13:56:23 +0800</pubDate><description><![CDATA[总结的一些Qt小知识]]></description><category></category></item><item><title><![CDATA[【QT】如何自定义QMessageBox的窗口大小，通过继承QDialog重新实现美观的弹窗]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/131393932</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/131393932</guid><author>WL0616</author><pubDate>Fri, 30 Jun 2023 15:12:44 +0800</pubDate><description><![CDATA[可以看出QMessageBox原有的弹窗看起来非常的不美观，有时候大有时候小，只能使用QMessageBox自带的图标，而且**不能自定义**窗口的**大小**，那是因为在源码中将其弹窗大小设置成了比较合适的大小，所以不能自定义改变弹窗大小。
可以看出通过样式表的方法也不太美观，其中text没有居中。
在对某一个组件设置了setObjectName()属性之后，我们可以通过objectName在外面获得这个组件。
可以看出在布局时，其icon总是处在第0行第0列的位置，且其Aliment设置的是Top，所以]]></description><category></category></item><item><title><![CDATA[【QT】枚举常用宏（Q_ENUM，Q_FLAG，Q_DECLARE_FLAGS，Q_DECLARE_OPERATORS_FOR_FLAGS）]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/131376253</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/131376253</guid><author>WL0616</author><pubDate>Sun, 25 Jun 2023 17:02:02 +0800</pubDate><description><![CDATA[1. 使用Q_ENUM之前，必须在类中先声明Q_OBJECT或Q_GADGET宏。
2. Q_ENUM(枚举类型)必须放在枚举声明之后，放在前面编译器会报错。
3. 用Q_ENUM声明的枚举，会自动注册到Qt元类型系统，可以使用静态函数QMetaEnum::fromType()来获取QMetaEnum。
4. Qt 中，模板类 QFlags 提供了类型安*的方式保存 enum 的逻辑运算结果，来解决类型不安全的问题。]]></description><category></category></item><item><title><![CDATA[【QT】如何检测目录或文件中的内容被修改，可以使用QFileSystemWatcher类进行检测]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130262507</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130262507</guid><author>WL0616</author><pubDate>Mon, 24 Apr 2023 09:11:03 +0800</pubDate><description><![CDATA[QFileSystemWatcher类提供了一个接口，用于监视文件和目录以进行修改。QFileSystemWatcher通过观察指定路径的列表来监视文件系统中文件和目录的更改。调用addPath()来监视特定的文件或目录。可以使用addPaths()函数添加多个路径。现有的路径可以通过使用removePath()和removePaths()函数删除。QFileSystemWatcher检查添加到它的每个路径。]]></description><category></category></item><item><title><![CDATA[【QT】如何为自定义的Dialog添加确定取消按钮，可以使用QDialogButtonBox类]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130231783</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130231783</guid><author>WL0616</author><pubDate>Fri, 21 Apr 2023 11:23:10 +0800</pubDate><description><![CDATA[如果你想在MainWindo界面中得到Dialog中按下确定键时的一些业务，例如，在Mainwindow界面新建项目，弹出新建项目的dialog，然后将新建项目界面获得的信息显示到MainWindow界面中，此时，你就需要在Dialog中发送一个信号，即。来判断dialog按下的是哪个按钮，而不用connect再传递一个信号给外面，也就不用接收确定按钮的connect函数和槽函数。QDialogButtonBox在添加按钮时可以为按钮添加Role角色，这个非常重要，这样的话在外面调用时，直接使用。]]></description><category></category></item><item><title><![CDATA[【QT】如何调整 comboBox下拉列表的间距或高度以及使下拉列表的字体居中]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130231314</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130231314</guid><author>WL0616</author><pubDate>Wed, 19 Apr 2023 11:21:19 +0800</pubDate><description><![CDATA[默认的QComboBox的下拉列表看起来非常的拥挤，且不美观。
那怎样调整comboBox下拉列表的间距或高度呢？请看下面的方法：]]></description><category></category></item><item><title><![CDATA[【QT】详细介绍Qt的窗口属性：Qt::WA_DeleteOnClose属性]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130196278</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130196278</guid><author>WL0616</author><pubDate>Mon, 17 Apr 2023 11:41:14 +0800</pubDate><description><![CDATA[如果widget接受了关闭事件，窗口将会隐藏（实际上调用hide()）。默认情况下widget会接受关闭事件,我们可以重写QCloseEvent事件，可以选择接受或者不接受。即接收到QCloseEvent事件后，除了调用hide()方法将窗口隐藏，同时会调用deleteLater()方法将窗口释放掉，不会再占用资源。当我们创建一个窗口（MainWindow, Widget, Dialog, QMessageBox, 等等）后，我们一般会调用close()方法来关闭窗口。对比该应用程序所占用的资源大小。]]></description><category></category></item><item><title><![CDATA[【QT】MainWindow中如何为菜单栏或工具栏中的Menu或Action设置快捷键]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/130157894</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/130157894</guid><author>WL0616</author><pubDate>Fri, 14 Apr 2023 17:33:25 +0800</pubDate><description><![CDATA[在为QMenu或Action设置text时，在text中的某个字母前加上&，在界面显示时你会发现：显示的text中没有&这个符号，只会显示text。这是因为在text中某个字母前加上&的作用是设置快捷键，当你按下Alt键时，其相应的text中&符号后面的字母会显示下划线，快捷键的使用方法是。第一种：先按住Alt，再按P，其显示的N会有下划线，再按N就会触发新建项目。在使用setShortcuts时，其action的后面会显示快捷键。按下Alt键时，其p下面会有下划线，表示是有快捷键的，快捷键为P。]]></description><category></category></item><item><title><![CDATA[【QT】在公司为了统一代码的风格，那如何在Qt Creater中进行设置]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129958827</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129958827</guid><author>WL0616</author><pubDate>Thu, 06 Apr 2023 11:03:10 +0800</pubDate><description><![CDATA[试着想一下，一个程序员写一个程序，commit到团队的程序管理库里面，如果团队中的其他开发者需要这个功能，那么他就会去阅读这个源码，正所谓一千个读者，一千个哈姆雷特。就算是代码这样对于计算机来说非常严格的语言，而在我们人类看来绝对无法抛开我们固有的逻辑思维，而像计算机一样去思考，像程序编译器一样去理解这段程序，我们可以做到的就是阅读源码，梳理出自己的一套逻辑，然后理解这段程序的作用是干什么。设置好统一的代码风格之后，无论你自己写代码的习惯是怎样的，在你保存之后，其代码的格式都会统一，非常的方便。]]></description><category></category></item><item><title><![CDATA[【Git Bash】项目开发过程中需要知道 git stash 的用法]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129834857</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129834857</guid><author>WL0616</author><pubDate>Mon, 03 Apr 2023 15:46:46 +0800</pubDate><description><![CDATA[将stash保存的内容应用到当前目录，恢复之前缓存的工作目录，会将缓存堆栈中的对应stash删除（即在stash list中删除此stash），默认为第一个stash，即stash@{0}；将stash保存的内容应用到当前目录，但不会把stash从存储列表中删除（在stash list中会一直存在），默认使用第一个保存，即stash@{0}；显示哪些文件被修改；，num是git stash list中显示的数字，例如显示第二个stash中哪些文件做了改变： git stash show stash@{1}]]></description><category></category></item><item><title><![CDATA[【Git Bash】在公司你是如何向gitlab上提交代码和拉取代码的，请看这里→]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129812987</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129812987</guid><author>WL0616</author><pubDate>Thu, 30 Mar 2023 17:06:15 +0800</pubDate><description><![CDATA[Successfully rebased and updated xxx 表示：仓库的最近一次提交是别人提交的，但是没有冲突，直接push即可。这里强烈建议使用VS Code，它真的很方便，可以很清晰的标记有冲突的两个文件（pull下来的文件和你本地修改的文件）的不同，代码的不同。那么你再次打开你的QT项目，在代码里会有]]></description><category></category></item><item><title><![CDATA[【QT】详细解释一下QDialog中exec与open的区别]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129704189</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129704189</guid><author>WL0616</author><pubDate>Mon, 27 Mar 2023 10:21:41 +0800</pubDate><description><![CDATA[使用exec进行显示，即按钮Btn3实现的窗口，可以看到：对话框是模态的，并且在对话框显示之后，其后面的代码并不会执行，即“333”并不会打印，也就是说exec显示的窗口会一直阻塞后面的代码不会执行，直到用户关闭它之后，才会执行后面的代码，此时”333“会打印出来。使用对象的方式实现一个对话框的显示，并使用open进行显示，即按钮Btn1实现的窗口，可以清晰的看到：对话框窗口是一闪而过的，但不影响open之后的代码的运行，其“111”还是会打印出来。中，在函数体中被构造，在函数结束的时候被析构。]]></description><category></category></item><item><title><![CDATA[【QT】QByteArray、QString、char* 的相互转化（文本形式、二进制、十六进制）]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129615310</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129615310</guid><author>WL0616</author><pubDate>Mon, 20 Mar 2023 09:16:22 +0800</pubDate><description><![CDATA[在C语言中，系统都会默认在字符串末给我们加上\0用于结束字符串，所以在打印输出时候，只要你打印格式是%s，系统知道我们要输出字符串，而且系统也可以确定字符串的长度，所以当你用%s打印字符指针p的时候就会输出字符串，如果你是以地址打印格式输出的话，系统就会给我们打印出地址， 如果你是解指针（*p），那么系统就取p指针指向的内容，此时看你自己以什么格式输出，就用什么格式打印。新建一个记事本命名为1.txt，并在里面随便写入数据，使用ZIP进行压缩为1.zip，zip压缩文件是16进制的数据格式。]]></description><category></category></item><item><title><![CDATA[【QT】JSON如何保存(序列化)QByteArray二进制或十六进制类型的数据]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129581498</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129581498</guid><author>WL0616</author><pubDate>Fri, 17 Mar 2023 15:59:14 +0800</pubDate><description><![CDATA[其QJsonValue存储数据的类型有：bool，double，int，QString等。对于网上的QByteArray直接转化为QString类型的方法，是对于文本字符串的。QString只有在数据是文本的时候才能使用，而不是二进制或十六进制的。]]></description><category></category></item><item><title><![CDATA[最详细的FreeMASTER 3.2版本安装教程]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129378813</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129378813</guid><author>WL0616</author><pubDate>Tue, 14 Mar 2023 09:10:44 +0800</pubDate><description><![CDATA[FreeMASTER是一个界面友好的，可用于实时观察目标系统中变量内容的数据可视化软件。可以通过多种通信方式将PC机和微控制器电路板连接，如果不是明确需要使用"FreeMASTER Lite服务"，而只是使用原有大家熟悉的使用FreeMASTER桌面版提供的功能，可以在安装过程中取消勾选FreeMASTER Lite的选项，不勾选是不需要激活码的，也可以正常使用FreeMASTER桌面版提供的功能。如果疏忽关闭了网页，跳过了激活码，没有激活码会直接回滚安装，FreeMASTER的基本功能也被卸载了。]]></description><category></category></item><item><title><![CDATA[如何为Keil安装version 5版本的ARM Compiler(Use default compliler version 5)]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129364471</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129364471</guid><author>WL0616</author><pubDate>Thu, 09 Mar 2023 09:43:21 +0800</pubDate><description><![CDATA[当打开别人的工程时，一定要看别人的工程是拿什么版本写的，如果是version 5版本写的，你用version 6去编译，当你build的时候就会出现一些错误，所以别人是什么版本写的，你就用什么版本编译。最新发布的MDK5.37已经不再安装Arm Compiler 5（ARMCC）编译器了，需要手动安装。因为在点击project→options for target后，在Target选项卡中选择ARM Compiler编译器时，会看到missing:compiler version 5]]></description><category></category></item><item><title><![CDATA[【QT】如何获取屏幕(桌面)的大小或分辨率]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129182751</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129182751</guid><author>WL0616</author><pubDate>Mon, 06 Mar 2023 11:40:43 +0800</pubDate><description><![CDATA[注意：如果是多屏幕，其每个屏幕的rect是不一样的，起始坐标不同，第一个屏幕的起始坐标是（0, 0），第二个屏幕的起始坐标是（1920, 0）QDesktopWidget 提供了详细的位置信息，其能够自动返回窗口在用户窗口的位置和应用程序窗口的位置。Qt 6.0 及之后版本，QDesktopWidget 已从QtWidgets 模块中被彻底移除。Qt5开始，QDesktopWidget官方不建议使用，改为QScreen。Qt5开始，QDesktopWidget官方不建议使用，改为QScreen。]]></description><category></category></item><item><title><![CDATA[【C++】关于结构体内存对齐的问题]]></title><link>https://blog.youkuaiyun.com/WL0616/article/details/129261673</link><guid>https://blog.youkuaiyun.com/WL0616/article/details/129261673</guid><author>WL0616</author><pubDate>Thu, 02 Mar 2023 09:51:24 +0800</pubDate><description><![CDATA[x86：指针是4字节，类A的大小是16，8与16的较小者是8。内存大小为：8 + 16 + 8 + 4 = 36，又因为36不是最大对齐数8的倍数，所以内存向后偏移，大小为 40。x64：指针是8字节，类A大小为24，8与24的较小者是8。内存大小为：8 + 24 + 8 +8 = 48，48刚好是最大对齐数8的倍数，所以内存大小为48。所以说，字节对齐的根本原因其实在于cpu读取内存的效率问题，对齐以后，cpu读取内存的效率会更快。这个字节，相当于读一个int，cpu从内存读取了两次。]]></description><category></category></item></channel></rss>