<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gkfdkl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/gkfdkl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gkfdkl]]></copyright><item><title><![CDATA[老版本ubantu update注意点]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/122023963</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/122023963</guid><author>gkfdkl</author><pubDate>Sun, 19 Dec 2021 15:04:25 +0800</pubDate><description><![CDATA[老版本ubantu更新注意点
由于作者平时工作大多使用的是Ubantu 12.04 LTS版本，其更新维护的生命周期已经结束，不再提供更新，所以直接sudo apt-get update 会报出很多Not Found 、找不到IP等错误，这个时候需要到 http://old-releases.ubuntu.com 上下载所需包。
具体在Ubantu的设置方式是：将 /etc/apt/sources.list 中的所有"us.archive.ubuntu.com"改为"old-releases.ubuntu.]]></description><category></category></item><item><title><![CDATA[Qt中事件和信号的本质区别]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114902733</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114902733</guid><author>gkfdkl</author><pubDate>Wed, 17 Mar 2021 01:44:13 +0800</pubDate><description><![CDATA[1. Qt中的事件和信号
很多初学Qt的人会将Qt中的信号和事件混为一谈，或者分不清他们之间的本质区别。本节就详细的讲述一下他们之间的本质区别。
在学习Qt时，我们最先知道的就是Qt特色信号-槽机制，之后又学习到了自定义事件发送和处理，这两者都有发送和处理机制，他们似乎有很大的相似性，到这里很多人就认为信号和事件是差不多的东西，也没有深究他们的不同点。

先思考一个问题：Qt应用程序中的事件的来源？

这个很多人都能回答上来，Qt中的事件来源于系统消息，经Qt平台(QApplication)转换封装为Qt事]]></description><category></category></item><item><title><![CDATA[Qt中多线程与界面组件地通信（2） -- 自定义事件机制]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114811265</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114811265</guid><author>gkfdkl</author><pubDate>Mon, 15 Mar 2021 01:35:41 +0800</pubDate><description><![CDATA[Qt中另一种多线程与界面组件通信的方法
上一节中讲到了使用Qt平台独有的信号槽机制，实现子线程与界面组件的通信，来间接操作界面组件。那么Qt中有没有其他方式能够实现这一功能呢？或者其他不支持信号槽机制的平台该怎么实现子线程操作界面组件呢？
还是借助Qt平台，我们很容易就能想到另一种可以跨线程的通信方式：事件。Qt平台支持比较完善的事件系统，当然也能发送自定义的事件，发送自定义事件的方式主要依靠两个函数：sendEvent()和postEnent()。两者的区别主要有如下几点：

sendEvent()会立即]]></description><category></category></item><item><title><![CDATA[Qt中多线程与界面组件地通信（1） -- 信号与槽机制]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114683250</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114683250</guid><author>gkfdkl</author><pubDate>Fri, 12 Mar 2021 00:34:13 +0800</pubDate><description><![CDATA[1. Qt中子线程直接操作界面组件会怎么样？
标题为什么叫“多线程与界面组件地通信？”线程难道不能直接刷界面，非要搞成对立地两方，通过某种方式通信？先看一段代码，在子线程中新建widget 界面：

////////////////以下是threadWidget.h//////////////////////
#ifndef THREADWIGHT_H
#define THREADWIGHT_H
#include &lt;QObject&gt;
#include &lt;QWidget&gt;
#inclu]]></description><category></category></item><item><title><![CDATA[C++父子类间的冲突（3）-- 多态]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114610694</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114610694</guid><author>gkfdkl</author><pubDate>Thu, 11 Mar 2021 01:38:34 +0800</pubDate><description><![CDATA[C++中的多态

]]></description><category></category></item><item><title><![CDATA[C++父子类间的冲突（2）-- 赋值兼容]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114609279</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114609279</guid><author>gkfdkl</author><pubDate>Wed, 10 Mar 2021 00:38:46 +0800</pubDate><description><![CDATA[父子类之间的赋值兼容性原则
父类和子类之间是继承的关系，子类拥有父类的一切属性、又有自己独有的属性。我们都知道把double赋给float会发生精度缩小的问题，那么用子类对象去初始化父类对象会发生什么呢？看下面一段代码：
#include "stdio.h"
class Parent 
{
public:
 void print()
 {
  printf("I'm Parent  \n");
 }
};
class Child : public Parent
{
public:
 void print()]]></description><category></category></item><item><title><![CDATA[C++父子类间的冲突（1）-- 同名覆盖问题]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114559545</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114559545</guid><author>gkfdkl</author><pubDate>Tue, 09 Mar 2021 01:27:36 +0800</pubDate><description><![CDATA[我们都知道C++有三大特性，封装、继承、多态。今天讲一下多态。

]]></description><category></category></item><item><title><![CDATA[Qt中的多线程编程(2)]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114501364</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114501364</guid><author>gkfdkl</author><pubDate>Mon, 08 Mar 2021 00:27:41 +0800</pubDate><description><![CDATA[Qt中另一种创建线程的方法
上一篇博客中，我介绍了一种Qt中经典的的创建线程的方法：继承QThread类、子类中重写run()函数的方法。经典方法虽然使用简单，但是有一个问题：在合理的软件架构中，代码中出现的继承关系，也应该真实反应需求中继承关系，思考一下：通过继承的方式实现新的线程类，有什么实际的意义？我觉得完全没有实际的意义，仅仅是为了重写run()函数。但是虽然没有实际意义，但是也不能说它是错误的，只不过在逻辑上有点背离面向对象。
下面开始介绍新的创建线程的方法
首先，我们得知道，Qt4.4版本之前，]]></description><category></category></item><item><title><![CDATA[Qt中的多线程编程(1)]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114417059</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114417059</guid><author>gkfdkl</author><pubDate>Sat, 06 Mar 2021 00:59:23 +0800</pubDate><description><![CDATA[Qt中的多线程编程（1）
进行多线程编程前，首先要搞懂几个概念：

进程：程序执行时由系统分配资源，按照执行流执行，这个过程其实就是进程。进程是操作系统分配资源的基本单位。
线程：线程是进程中的具体执行单元，一个程序从main()函数入口地址开始执行时，就有了一个进程、至少一个线程，进程是“过程”的概念；线程则是具体被系统调度、执行的。  （main函数执行结束，是不是这个进程就结束了呢？当然不是，进程内部所有线程的结束才是一个进程的结束）

Qt中实现多线程的方式：
Qt支持的QThread类可以轻易地实]]></description><category></category></item><item><title><![CDATA[main函数及其命令行参数]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114381578</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114381578</guid><author>gkfdkl</author><pubDate>Fri, 05 Mar 2021 01:20:03 +0800</pubDate><description><![CDATA[main函数及其命令行参数
问题1：main()函数一定是首先执行的函数吗？
答：分情况；比如在GCC编译器中，一些编译器属性能指定先调用其他函数，如GCC编译器，示例程序：

#include "stdio.h"
__attribute__((constructor))
void ecex_before_main()
{
printf(" %s \n",__FUNCTION__);
}
__attribute__((destructor))
void ecex_after_main()
{
printf(]]></description><category></category></item><item><title><![CDATA[C++函数后加const的作用和解释]]></title><link>https://blog.youkuaiyun.com/gkfdkl/article/details/114343291</link><guid>https://blog.youkuaiyun.com/gkfdkl/article/details/114343291</guid><author>gkfdkl</author><pubDate>Thu, 04 Mar 2021 01:17:34 +0800</pubDate><description><![CDATA[C++函数后加const的作用
先说结论：表示该函数不能修改所在类的成员变量。
示例函数声明和定义
函数声明：
#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include &lt;QMainWindow&gt;


class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
]]></description><category></category></item></channel></rss>