<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[c_shell_python的博客]]></title><description><![CDATA[蓦然回首，那人却在灯火阑珊处]]></description><link>https://blog.csdn.net/c_shell_python</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; c_shell_python]]></copyright><item><title><![CDATA[目标尚未成功，生活仍需努力]]></title><link>https://blog.csdn.net/c_shell_python/article/details/146171068</link><guid>https://blog.csdn.net/c_shell_python/article/details/146171068</guid><author>c_shell_python</author><pubDate>Tue, 11 Mar 2025 09:58:18 +0800</pubDate><description><![CDATA[回顾一下这3年来，脑海里只有加班，加班，其实加班太多弊端是蛮大的，虽然钱能多挣点，但是时间都碎片化了，加上住的地方离工作地要通勤1个小时以上，很费精力，脑子里总感觉很浑浊，多线程开发5个以上不同业务的项目，的确适应了一段时间才好过来。多线程，多进程，线程同步，socket编程，io多路复用，操作word/excel，xml处理，开发语言编译器，译码器，仿真器，各种协议传输工具，日志器，libuv，liburl，snmp，opencv，短信/邮件发送，打包脚本等等，抽时间慢慢把之前堆积的博客更新上来。]]></description><category></category></item><item><title><![CDATA[Qt之QTableView显示鼠标悬浮下的项的信息]]></title><link>https://blog.csdn.net/c_shell_python/article/details/128290050</link><guid>https://blog.csdn.net/c_shell_python/article/details/128290050</guid><author>c_shell_python</author><pubDate>Mon, 12 Dec 2022 17:40:09 +0800</pubDate><description><![CDATA[首先想到的思路就是鼠标悬浮事件，即安装QTableView的事件过滤器，然后在eventFilter进行判断即可。实现很简单，主要在针对qt界面处理子界面的事件响应时，主要是还没搞清楚ui.tableView->viewport()->installEventFilter(this)的使用场景，就先记录一下。网上有一种说法，还需要使用ui.tableView->viewport()->installEventFilter(this)，否则QTableView的事件过滤器无效，不过我目前还没有遇到这种情况。]]></description><category></category></item><item><title><![CDATA[Qt实现TCP客户端和服务器通讯程序]]></title><link>https://blog.csdn.net/c_shell_python/article/details/123586179</link><guid>https://blog.csdn.net/c_shell_python/article/details/123586179</guid><author>c_shell_python</author><pubDate>Fri, 18 Mar 2022 22:48:55 +0800</pubDate><description><![CDATA[复习的心态过一遍之前基础的一些东西，Qt封装了QTcpServer和QTcpSocket两个类，其中QTcpServer继承自QObject，通过listen()函数监听传入的客户端连接，当Client连接上时，QTcpServer会发出newConnection的信号，在对应的槽函数中使用nextPendingConnection()拿到连接的客户端的句柄和信息。

而QTcpSocket则是读写数据的时候使用，过程很简单。

服务器流程：listen-&gt;newConnection-&gt;next]]></description><category></category></item><item><title><![CDATA[Qt之connect函数—信号槽连接的几种方式和优缺点]]></title><link>https://blog.csdn.net/c_shell_python/article/details/123577999</link><guid>https://blog.csdn.net/c_shell_python/article/details/123577999</guid><author>c_shell_python</author><pubDate>Fri, 18 Mar 2022 16:45:16 +0800</pubDate><description><![CDATA[connect函数在qt中作为连接信号和槽的函数，并不陌生。它目前有以下3种写法：

1、使用SIGNAL和SLOT宏


connect(ui-&gt;pushButton,SIGNAL(clicked()),this,SLOT(onPushButtonClicked()));

2、使用&amp;类名::函数名


connect(ui-&gt;pushButton_2,&amp;QPushButton::clicked,this,&amp;Widget::onSetBlockedSignalStatu]]></description><category></category></item><item><title><![CDATA[Qt之QObject::blockSignals函数的使用和理解]]></title><link>https://blog.csdn.net/c_shell_python/article/details/123575969</link><guid>https://blog.csdn.net/c_shell_python/article/details/123575969</guid><author>c_shell_python</author><pubDate>Fri, 18 Mar 2022 16:08:38 +0800</pubDate><description><![CDATA[在某些业务下，需要阻塞住对象某个信号的发送，避免它触发对应的槽影响到后续的操作。可以通过bool QObject::blockSignals(bool block)来做简单的处理。





从qt的帮助文档可以了解到，如果blockSignals(bool block)的参数block设置为true，那么信号的发送会被阻塞，反之不会阻塞。而且被阻塞时，发出的信号不会被缓存。即使对象的信号被阻塞住，也对destroyed()信号没有影响。

可以通过signalsBlocked()函数来判断某个对象的信号是]]></description><category></category></item><item><title><![CDATA[曾经的梦想天真无邪，后来满脑子都是为了钱]]></title><link>https://blog.csdn.net/c_shell_python/article/details/121047009</link><guid>https://blog.csdn.net/c_shell_python/article/details/121047009</guid><author>c_shell_python</author><pubDate>Sat, 30 Oct 2021 10:22:57 +0800</pubDate><description><![CDATA[有段时间没有更新博客了，总是想写点什么，又感觉没啥可写的。这几个月很忙，但是忙完后这两天坐下来想想，好像做了点什么又好像什么都没做。

回想一下感觉这半年来没有很多的进步，更多的沉浸于公司的业务代码迭代和现场bug的处理上了，时间嗖的一下就过去了，有时候下班一回到出租房，那个腰酸背痛的，主要是敲代码是一件比较费神的事情，比如一个标点符号都不能错，不然万一编译没报错，程序运行错误定位不到位置，找起来就累得很。我的亲人们觉得，坐办公室，吹着空调很舒服，不用体力劳动，怎么这样上班也...]]></description><category></category></item><item><title><![CDATA[Qt 在Release 模式下 在控制台显示qDebug的打印信息]]></title><link>https://blog.csdn.net/c_shell_python/article/details/120430814</link><guid>https://blog.csdn.net/c_shell_python/article/details/120430814</guid><author>c_shell_python</author><pubDate>Thu, 23 Sep 2021 11:02:49 +0800</pubDate><description><![CDATA[1、如下图所示：将Release下的预处理器中QT_NO_DEBUG去除。





2、将链接器下的系统中的子系统，修改为控制台




]]></description><category></category></item><item><title><![CDATA[MFC中LoadLibrary调用Qt动态库失败的原因]]></title><link>https://blog.csdn.net/c_shell_python/article/details/118144220</link><guid>https://blog.csdn.net/c_shell_python/article/details/118144220</guid><author>c_shell_python</author><pubDate>Wed, 23 Jun 2021 09:51:53 +0800</pubDate><description><![CDATA[今天在不同的电脑用mfc使用LoadLibrary调用qt的动态库，在某些电脑成功，某些电脑又失败。开始以为是宽字符的原因。可以看到在UNICODE编码下，LoadLibrary实际上是LoadLibraryW。



于是改成 HMODULE hDll = LoadLibrary(TEXT("qtdialog.dll"));还是失败。

网上查了一下，可能是qt的动态库依赖不够，所以用PowerShell中的dump工具查看它的依赖，发现缺少了msvcp140.dll。添加上后，调用正常。



在...]]></description><category></category></item><item><title><![CDATA[Qt+SDL+ffmpeg 实现音视频播放器]]></title><link>https://blog.csdn.net/c_shell_python/article/details/115629966</link><guid>https://blog.csdn.net/c_shell_python/article/details/115629966</guid><author>c_shell_python</author><pubDate>Mon, 12 Apr 2021 17:09:27 +0800</pubDate><description><![CDATA[目录

主要思路

效果

​核心代码

解码：

SDL初始化：

视频帧渲染：

完整工程： 

主要思路

sdl用于视频的渲染和音频的播放。qt实现播放器客户端，而ffmpeg则用于解码音视频。
关于sdl的了解可以参考https://blog.csdn.net/c_shell_python/article/details/109521840
关于ffmpeg，可以参考雷神的博客https://blog.csdn.net/leixiaohua1020/article/details/15811...]]></description><category></category></item><item><title><![CDATA[Qt 实现读写xml]]></title><link>https://blog.csdn.net/c_shell_python/article/details/115620356</link><guid>https://blog.csdn.net/c_shell_python/article/details/115620356</guid><author>c_shell_python</author><pubDate>Mon, 12 Apr 2021 14:17:29 +0800</pubDate><description><![CDATA[目录

定义：

用途：

写入效果：

核心代码：

定义：


XML（Extensible Markup Language）即可扩展标记语言。
标记指计算机所能理解的信息符号，通过此种标记，计算机之间可以处理包含各种信息的文章等。

用途：


XML设计用来传送及携带数据信息，不用来表现或展示数据，HTML则用来表现数据，所以XML用途的焦点是它说明数据是什么，以及携带数据信息。
（摘自维基百科）

熟悉对xml的操作，在项目开发中非常重要。
qt中提供了几种类可以对xml进行处理。本次介绍的是QX]]></description><category></category></item><item><title><![CDATA[Qt 实现动态矩阵界面]]></title><link>https://blog.csdn.net/c_shell_python/article/details/115549643</link><guid>https://blog.csdn.net/c_shell_python/article/details/115549643</guid><author>c_shell_python</author><pubDate>Fri, 09 Apr 2021 14:19:44 +0800</pubDate><description><![CDATA[在某些场合，需要呈现多个图表或者界面，但是图表的个数是不固定的。
就可以先生成一定数量的父对象，来承接图表。同时在界面预览不够时增加滚动条效果。

核心思路：利用Qt布局的QGridLayout-栅格布局与QScrollArea结合

效果如下：



demo核心代码：


for(int i=0;i&lt;200;i++)
{
	LabelModel *label = new LabelModel(this);
	label-&gt;setMinimumSize(100,200);
	connect(l]]></description><category></category></item><item><title><![CDATA[Qt程序 获取windows睡眠和亮屏时的状态]]></title><link>https://blog.csdn.net/c_shell_python/article/details/115548935</link><guid>https://blog.csdn.net/c_shell_python/article/details/115548935</guid><author>c_shell_python</author><pubDate>Fri, 09 Apr 2021 13:54:54 +0800</pubDate><description><![CDATA[在某些业务需求下，Qt的程序需要感知到windows睡眠和亮屏时状态
以便程序做对应的处理动作。好在Qt为我们提供了QAbstractNativeEventFilter类
来捕获对应的windows事件。

一、步骤如下：
1、主界面MyMainWindow类继承QAbstractNativeEventFilter
2、重载virtual bool nativeEventFilter(const QByteArray &amp;eventType, void *message, long *result);]]></description><category></category></item><item><title><![CDATA[Qt之QListWidget实战]]></title><link>https://blog.csdn.net/c_shell_python/article/details/114253894</link><guid>https://blog.csdn.net/c_shell_python/article/details/114253894</guid><author>c_shell_python</author><pubDate>Mon, 01 Mar 2021 10:04:50 +0800</pubDate><description><![CDATA[介绍

QListWidget是一个与QListView类似的列表视图类。
作为Qt常用的视图类，它提供了很多简便的函数，方便对列表中的项进行展示和操作。
当项大于窗口高度时，会自动弹出滑动条。
以下是QListWidget的添加项、删除项、清空列表、
重命名，右键菜单弹出，双击事件等功能。

重命名效果



所有代码

头文件


#ifndef WIDGET_H
#define WIDGET_H

#include &lt;QWidget&gt;
#include &lt;QListWidget&gt]]></description><category></category></item><item><title><![CDATA[Qt实现 QOpenGL绘制彩色三角形]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112684715</link><guid>https://blog.csdn.net/c_shell_python/article/details/112684715</guid><author>c_shell_python</author><pubDate>Sat, 16 Jan 2021 12:24:59 +0800</pubDate><description><![CDATA[QOpenGLWidget类封装了opengl，比起原生的opengl，使用起来很方便。只需要让子类继承QOpenGLWidget。

OpenGL（英语：Open Graphics Library，译名：开放图形库或者“开放式图形库”）是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口（API）。这个接口由近350个不同的函数调用组成，用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、]]></description><category></category></item><item><title><![CDATA[PyQt实现 计数器--快速掌握python开发桌面软件]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112692598</link><guid>https://blog.csdn.net/c_shell_python/article/details/112692598</guid><author>c_shell_python</author><pubDate>Sat, 16 Jan 2021 10:30:16 +0800</pubDate><description><![CDATA[目录

1、PyQt介绍

2、界面效果

3、主要代码

4、全部代码（拷贝即可运行）

1、PyQt介绍

PyQt是python的GUI框架之一，这是一个跨平台的UI框架，即可以运行在windows、Linux、Mac上，可以用来替换Python内置的TKinter。

PyQt支持Python2.x和Python3.x。而Qt是Digia公司的产品，是一个跨平台的C++GUI开发框架，也支持python，

目前Qt逐步取代MFC，成为大多数公司开发GUI程序的主要选择，其丰富的类库和一份代码不同编]]></description><category></category></item><item><title><![CDATA[4年饮冰，难凉热血]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112643810</link><guid>https://blog.csdn.net/c_shell_python/article/details/112643810</guid><author>c_shell_python</author><pubDate>Thu, 14 Jan 2021 22:44:43 +0800</pubDate><description><![CDATA[目录

近期

曾经

2020

2020工作

2020买房

2020年底没有写总结，因为前段工作时间太忙了，之前为了赶一个软件，996了很多天，有一天晚上下班的时候，

保安大叔还特地嘱咐我太晚不要骑单车了，还有公交，感觉很暖心，人间自有温情在。

今天写这篇文章就当是2020的总结了，时间比较少，可能有点乱，大家请随意看看。



近期

最近在搞测试工具的开发，因为不单单对一两个服务器做压测，可能需要20-50个数量级别都有可能，所以今天下午在线程池，

到时候方便把对应服务器状态数据展示在界.]]></description><category></category></item><item><title><![CDATA[Qt实现 结合opencv播放mp4]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112432204</link><guid>https://blog.csdn.net/c_shell_python/article/details/112432204</guid><author>c_shell_python</author><pubDate>Sun, 10 Jan 2021 21:01:58 +0800</pubDate><description><![CDATA[目录

1、opencv介绍

2、效果图

3、下载并编译opencv源码，生成DLL

4、核心代码

1、opencv介绍

opencv的全称是Open Source Computer Vision Library，是一个跨平台的计算机视觉库，底层代码由C++编写，拥有c++、python、java等接口。

因为其跨平台特性，被广泛运用于：人脸识别，图像处理、人机交互等领域。

2、效果图

本项目实现了通过opencv+qt播放视频的功能。其中用qt制作前端，opencv负责处理视频的解码过程。]]></description><category></category></item><item><title><![CDATA[我们一起玩python之 元组和字典]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112391665</link><guid>https://blog.csdn.net/c_shell_python/article/details/112391665</guid><author>c_shell_python</author><pubDate>Sat, 09 Jan 2021 15:55:43 +0800</pubDate><description><![CDATA[元组概念

元组和列表很相似，不同点是列表是用[]方括号把元素包裹起来，而元组是用()小括号。

与此同时，元组也不能修改里面的元素，这也是和列表的不同点。元组的创建很简单

tup=() 就是创建了一个名为tup的空元组。

tup=(1,) 表示创建一个只有1个元素，数值为1的元组。需要注意的是，即使只包含1个元素，也需要在

tup=('1','3','5') 表示创建了一个含有1、3、5元素的元组。
...]]></description><category></category></item><item><title><![CDATA[ubuntu--实战小经验]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112390458</link><guid>https://blog.csdn.net/c_shell_python/article/details/112390458</guid><author>c_shell_python</author><pubDate>Sat, 09 Jan 2021 13:24:09 +0800</pubDate><description><![CDATA[目录

1、ubuntu中出现E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/)，是否有其他进程正占用它？

2、Ubuntu18.04虚拟机窗口无法自适应的问题

3、Ubuntu18.04下载地址

4、ubuntu下永久设置vi编辑器的行号和tab缩进

5、stray ‘\240’ in program的错误

6、ubuntu安装mysql及开通图形界面访问mysql权限

7、suse linu]]></description><category></category></item><item><title><![CDATA[shell--实战小经验]]></title><link>https://blog.csdn.net/c_shell_python/article/details/112390397</link><guid>https://blog.csdn.net/c_shell_python/article/details/112390397</guid><author>c_shell_python</author><pubDate>Sat, 09 Jan 2021 13:10:32 +0800</pubDate><description><![CDATA[目录

1、判断当前文件是否存在目录或者文件

2、判断目录下文件的个数

3、对日期进行排序

4、替换文件内某个字符串

5、给文件中数据加上引号

6、shell导出mysql数据表指定行数记录

1、判断当前文件是否存在目录或者文件

获取指定目录下的所有文件名


path=/home/data
 
files=$(ls ${path})
 
for filename in $files
 
do

判断文件是不是目录，是就跳过


if [ -d ${path}/$filename ]
then]]></description><category></category></item></channel></rss>