<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Leo的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Leo_csdn_</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Leo_csdn_]]></copyright><item><title><![CDATA[Qt实现仿微信在线聊天工具（服务器、客户端）V1_ 04]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/130393578</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/130393578</guid><author>Leo_csdn_</author><pubDate>Fri, 19 Jul 2024 14:38:58 +0800</pubDate><description><![CDATA[上一篇实现了客户端与服务器的通信，这一篇继续实现相关功能。]]></description><category></category></item><item><title><![CDATA[使用NSIS工具在linux下自动构建生成windows安装包]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/138302344</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/138302344</guid><author>Leo_csdn_</author><pubDate>Mon, 29 Apr 2024 10:49:12 +0800</pubDate><description><![CDATA[目前手头的项目都是基于linux环境下搭建的开发框架，使用docker工具分别生成不同环境下的运行程序，现在需要将生成的运行程序文件自动构建打包生成对应操作系统环境下的安装包程序，这里介绍的是linux下打包生成windows安装包，linux版本是，使用的打包工具是。]]></description><category></category></item><item><title><![CDATA[Qt实现仿微信在线聊天工具（服务器、客户端）V1_ 03]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/130371736</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/130371736</guid><author>Leo_csdn_</author><pubDate>Thu, 27 Apr 2023 11:28:34 +0800</pubDate><description><![CDATA[上一篇实现了窗口移动以及最大化最小化，本章将要实现与服务器的连接。]]></description><category></category></item><item><title><![CDATA[Qt实现仿微信在线聊天工具（服务器、客户端）V1_ 02]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/130350075</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/130350075</guid><author>Leo_csdn_</author><pubDate>Mon, 24 Apr 2023 20:02:34 +0800</pubDate><description><![CDATA[这里可以 参考我的另一篇博客，自定窗口的拖动。]]></description><category></category></item><item><title><![CDATA[Qt实现仿微信在线聊天工具（服务器、客户端）V1_ 01]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/130349034</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/130349034</guid><author>Leo_csdn_</author><pubDate>Mon, 24 Apr 2023 18:37:55 +0800</pubDate><description><![CDATA[在主控类中绑定登录类的信号 void signalLoginOK() ，跳过验证步骤，先实现页面的跳转MyChatToolClient.h文件//登录成功槽函数 private :MyChatToolClient.cpp文件} //登录成功槽函数 void MyChatToolClient :: slotLoginOk() {//关闭登录窗口并释放空间 m_loginWin -> close();//新建并打开聊天窗口 m_chatWin = new ChatWindow;]]></description><category></category></item><item><title><![CDATA[Qt信号槽-原理分析]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/109491894</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/109491894</guid><author>Leo_csdn_</author><pubDate>Wed, 04 Nov 2020 15:48:59 +0800</pubDate><description><![CDATA[转载一篇关于Qt信号槽原理解析的文章，讲解的很详细，有的地方可能有点深度，不过还是能很大程度上的帮助理解信号槽原理。



一、问题

moc预编译在干嘛
	signals和slots关键字产生的理由
	信号槽连接方式有什么区别
	信号和槽函数有什么区别
	connect到底干了什么
	信号触发原理
下面我们就分模块来讲述下Qt的信号槽，首先分析下Moc他到底干了什么，如果没有他信号槽还能行吗？接着我们在来分析下最常用的connect函数，最后在看下信号执行后是怎么触发槽函数的？

二、Moc

q...]]></description><category></category></item><item><title><![CDATA[Qt学习笔记11：自定义控件增加属性并通过qss设置样式]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/109209220</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/109209220</guid><author>Leo_csdn_</author><pubDate>Wed, 21 Oct 2020 20:57:53 +0800</pubDate><description><![CDATA[继承QLabel类实现一个类似于toolbutton的可选控件，有选择和未选择两种状态



第一步：首先定义属性

这里属性取名“checked”，有两种方式

方法一：在设计师里定义



点击加号，选择属性类型，这里两种状态，直接使用 bool 类型即可，属性名 checked



新增的属性如下图



方法二：在代码中定义


class LabelButton : public QLabel
{
	Q_OBJECT
    Q_PROPERTY(bool checked READ isCh..]]></description><category></category></item><item><title><![CDATA[Qt学习笔记10：利用html语法修改一段文本中指定文字的样式]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/108443596</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/108443596</guid><author>Leo_csdn_</author><pubDate>Mon, 07 Sep 2020 11:37:06 +0800</pubDate><description><![CDATA[对 Label进行样式设置时，遇到了需要修改其中特定文字的样式，如下





这是QQ的好友名和备注信息，备注名深色，原昵称浅色 ，开始时采用两个label拼接的方式

在Qt Designer界面设计并预览，感觉效果是对的



不过实际运行时，效果还是有偏差，两个label之间的距离变大了





在另一篇关于修改Tooltip样式的笔记中，提到了可以用 html 语法来控制和设置控件样式

（笔记连接：https://blog.csdn.net/Leo_csdn_/article/detai...]]></description><category></category></item><item><title><![CDATA[Qt学习笔记9：控件的对齐方式（靠左对齐、靠右对齐、居中对齐、垂直靠上对齐）]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/108404020</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/108404020</guid><author>Leo_csdn_</author><pubDate>Fri, 04 Sep 2020 15:50:02 +0800</pubDate><description><![CDATA[Qt组件的集中对齐方式


Qt::AlignLeft    //水平方向靠左。
Qt::AlignRight    //水平方向靠右。
Qt::AlignHCenter    //水平方向居中。
Qt::AlignTop        //垂直方向靠上。

设置方法


	ui.widget-&gt;layout()-&gt;setAlignment(Qt::AlignLeft);

AlignLeft 水平靠左

 



AlignRight 水平靠右



AlignTop 垂直靠上
...]]></description><category></category></item><item><title><![CDATA[Qt学习笔记8：利用eventFilter（事件过滤）实现自定义的hover效果]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/108356719</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/108356719</guid><author>Leo_csdn_</author><pubDate>Wed, 02 Sep 2020 10:07:53 +0800</pubDate><description><![CDATA[QWidget本身是没有hover属性可以设置的，想要自定义一个hover效果，可以通过eventFilter 来实现，

废话少说，先上代码


QPopupWgt::QPopupWgt(QWidget *parent)
	: QWidget(parent)
{
	//setMouseTracking(true);
	this-&gt;setAttribute(Qt::WA_Hover, true);//开启悬停事件
	this-&gt;installEventFilter(this);       /.]]></description><category></category></item><item><title><![CDATA[Qt学习笔记7：恢复被最小化的窗口]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/108256399</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/108256399</guid><author>Leo_csdn_</author><pubDate>Thu, 27 Aug 2020 11:34:29 +0800</pubDate><description><![CDATA[当窗口被最小化到任务栏，想通过自定义事件重新显示窗口,调用 ‘showNormal()’ 方法


void reShowWindow(Widget* wgt)
{
    if(wgt-&gt;isMinimized())
        wgt-&gt;showNormal();
}


]]></description><category></category></item><item><title><![CDATA[Qt学习笔记6：修改QToolTip样式]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/107985591</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/107985591</guid><author>Leo_csdn_</author><pubDate>Thu, 13 Aug 2020 17:58:58 +0800</pubDate><description><![CDATA[修改Qt的tooltip主要是两种方式

修改样式表，或者通过 html 语法控制样式





方式一、修改样式表

修改样式表可以在Qt Designer里进行编辑



也可以在代码中进行设置



通过样式表方式设置，使用时需要传入 this 指针,才能使对应的样式表生效！


 QToolTip::showText(event-&gt;pos(), "修改样式", this);



方式二、利用‘html’语法设置样式


    QString style = "&lt;b style=...]]></description><category></category></item><item><title><![CDATA[Qt学习笔记5：不规则窗体]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/106193488</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/106193488</guid><author>Leo_csdn_</author><pubDate>Mon, 18 May 2020 15:34:43 +0800</pubDate><description><![CDATA[1.新建Gui应用，类名自定义（示例为ShapeWidget），基类选择QWidget



2.为了使不规则窗体能够通过鼠标随意拖拽，在类中重定义了鼠标事件 mousePressEvent() 、mouseMoveEvent() 以及绘制函数paintEvent()


protected:
	void mousePressEvent(QMouseEvent *);
	void mouseMoveEvent(QMouseEvent *);
	void paintEvent(QPaintEvent *);.]]></description><category></category></item><item><title><![CDATA[Qt学习笔记4：自定义窗口移动事件]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/106144326</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/106144326</guid><author>Leo_csdn_</author><pubDate>Fri, 15 May 2020 18:00:47 +0800</pubDate><description><![CDATA[通过执行鼠标按下事件响应函数 mousePressEvent(QMouseEvent*)和鼠标移动事件响应函数 mouseMoveEvent(QMouseEvent*)的重定义，实现自定义的鼠标拖拽移动窗口



先看一种简单的实现


void Demo::mousePressEvent(QMouseEvent *event)
{
	if (event-&gt;button() == Qt::LeftButton)
	{
		dragPosition = event-&gt;globalPos() -..]]></description><category></category></item><item><title><![CDATA[努力和家境哪个更重要]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/106146456</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/106146456</guid><author>Leo_csdn_</author><pubDate>Fri, 15 May 2020 17:33:28 +0800</pubDate><description><![CDATA[这个时代——“寒门再难出贵子”，
也许不服，不甘，但想改变好比石头砸天
现在越来越看清楚“性格决定命运”，性格这东西是熔透于骨髓的，性格的养成和学校教育没有多大关系，大多决定于家庭背景，和成长环境。。。从大学毕业出来的第一步往往起到至关作用的是家庭背景，也就是从起跑线开始，普通家庭的孩子就输了一大截。。
在一个物欲横流的时代，当金钱决定一切，成为人的终极信仰的时候，这时候也是“门阀”，即阶层相应出现的年代。
结合我自己近半年来的观察， 我在某商业银行人力资源部上班，去年招了很多学校的实习生（实习并不是正式录]]></description><category></category></item><item><title><![CDATA[QT学习笔记3：两种显示进度条的方式QProgressBar和QProgressDialog]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/106122261</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/106122261</guid><author>Leo_csdn_</author><pubDate>Thu, 14 May 2020 16:22:01 +0800</pubDate><description><![CDATA[Qt提供了两种显示进度条的方式

一种是QProgressBar，提供了一种横向或纵向显示进度的控件表示方式，用来描述任务的完成情况；

另一种是QProgressDialog，提供了一种针对慢速过程的进度对话框表示方式，用于描述任务完成的进度情况。

QProgressBar实例                   

QProgressDialog实例           







实例代码

.h文件


#pra...]]></description><category></category></item><item><title><![CDATA[C++单例模式]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/106102202</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/106102202</guid><author>Leo_csdn_</author><pubDate>Wed, 13 May 2020 17:11:08 +0800</pubDate><description><![CDATA[一、什么是单例

单例 Singleton 是设计模式的一种，其特点是只提供唯一一个类的实例,具有全局变量的特点，在任何位置都可以通过接口获取到那个唯一实例;
具体运用场景如：

设备管理器，系统中可能有多个设备，但是只有一个设备管理器，用于管理设备驱动;
	数据池，用来缓存数据的数据结构，需要在一处写，多处读取或者多处写，多处读取;
二、C++单例的实现

2.1 基础要点

全局只有一个实例：static 特性，同时禁止用户自己声明并定义实例（把构造函数设为 private）
	线程安全
	禁止赋值和拷]]></description><category></category></item><item><title><![CDATA[QT学习笔记2：可变形的对话框——扩展对话框]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/105807405</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/105807405</guid><author>Leo_csdn_</author><pubDate>Tue, 28 Apr 2020 11:08:05 +0800</pubDate><description><![CDATA[Qt常见的可变形的的对话框有两种——扩展对话框和多页对话框。



扩展对话框

做个简单的示范，在Qt designer里面设计如下，这里为了便于理解，将组件最简单化，设置一个pushButton，放在顶部，一个GroupBox，里面放了两个单选按钮（这里随意）

然后设置主窗口为垂直布局





然后开始进行真正实现扩展的步骤

1.将”更多”按钮的属性中的 checkable 属性勾选上...]]></description><category></category></item><item><title><![CDATA[QT学习笔记1：widget相关属性设置（窗口透明、无边框等）]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/105482439</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/105482439</guid><author>Leo_csdn_</author><pubDate>Mon, 13 Apr 2020 10:25:50 +0800</pubDate><description><![CDATA[设置窗口透明


this-&gt;setAttribute(Qt::WA_TranslucentBackground); //设置窗口透明



设置窗口无边框


this-&gt;setWindowFlags(Qt::FramelessWindowHint); //设置窗口无边框



解决给widget设置颜色无效问题


this-&gt;setAutoFillBackgro...]]></description><category></category></item><item><title><![CDATA[VS编译出现“意外的标记位于“;”之前；语法错误 : 缺少“;”(在“*”的前面)；缺少类型说明符 - 假定为 int”]]></title><link>https://blog.csdn.net/Leo_csdn_/article/details/105251827</link><guid>https://blog.csdn.net/Leo_csdn_/article/details/105251827</guid><author>Leo_csdn_</author><pubDate>Wed, 01 Apr 2020 18:05:34 +0800</pubDate><description><![CDATA[在VS编译的过程中，出现了类似于下面的错误





反复核对代码并没有发现任何语法问题譬如少了‘；’之类的。

查了一些文章发现，这几个报错基本都是同时出现的。

情况一

多数情况下出现这种问题的原因是因为头文件重复包含，即头文件A包含了B，头文件B又包含了A，导致编译器在加载头文件时陷入死循环。

解决办法：修改头文件包含，如果两个文件代码确实紧密关联，建议写到一个文件中。



情况二
...]]></description><category></category></item></channel></rss>