- 博客(180)
- 资源 (7)
- 收藏
- 关注

原创 Qt--实战小经验
目录1、判断字符串是不是数字2、设置按钮背景图状态(鼠标悬浮,鼠标按下)3、保留n位有效数字或小数4、解决因代码存在中文导致出现“常量中有换行符”的错误5、Qt之QPushButton实现文本省略...6、通过读取文件设置qss7、手动计算进度条百分比8、传参设置字体9、杀死第三方软件或后台进程10、lineEdit限制输入特殊字符并设置密码输入模式11、tableview设置某行的一个项无法被选择12、获取函数运行的时间13、取消当前项被选中后的颜色
2021-01-09 12:47:19
1578
原创 目标尚未成功,生活仍需努力
回顾一下这3年来,脑海里只有加班,加班,其实加班太多弊端是蛮大的,虽然钱能多挣点,但是时间都碎片化了,加上住的地方离工作地要通勤1个小时以上,很费精力,脑子里总感觉很浑浊,多线程开发5个以上不同业务的项目,的确适应了一段时间才好过来。多线程,多进程,线程同步,socket编程,io多路复用,操作word/excel,xml处理,开发语言编译器,译码器,仿真器,各种协议传输工具,日志器,libuv,liburl,snmp,opencv,短信/邮件发送,打包脚本等等,抽时间慢慢把之前堆积的博客更新上来。
2025-03-11 09:58:18
329
原创 Qt之QTableView显示鼠标悬浮下的项的信息
首先想到的思路就是鼠标悬浮事件,即安装QTableView的事件过滤器,然后在eventFilter进行判断即可。实现很简单,主要在针对qt界面处理子界面的事件响应时,主要是还没搞清楚ui.tableView->viewport()->installEventFilter(this)的使用场景,就先记录一下。网上有一种说法,还需要使用ui.tableView->viewport()->installEventFilter(this),否则QTableView的事件过滤器无效,不过我目前还没有遇到这种情况。
2022-12-12 17:40:09
2527
原创 Qt实现TCP客户端和服务器通讯程序
复习的心态过一遍之前基础的一些东西,Qt封装了QTcpServer和QTcpSocket两个类,其中QTcpServer继承自QObject,通过listen()函数监听传入的客户端连接,当Client连接上时,QTcpServer会发出newConnection的信号,在对应的槽函数中使用nextPendingConnection()拿到连接的客户端的句柄和信息。而QTcpSocket则是读写数据的时候使用,过程很简单。服务器流程:listen->newConnection->next
2022-03-18 22:48:55
3964
5
原创 Qt之connect函数—信号槽连接的几种方式和优缺点
connect函数在qt中作为连接信号和槽的函数,并不陌生。它目前有以下3种写法:1、使用SIGNAL和SLOT宏connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(onPushButtonClicked()));2、使用&类名::函数名connect(ui->pushButton_2,&QPushButton::clicked,this,&Widget::onSetBlockedSignalStatu
2022-03-18 16:45:16
8844
原创 Qt之QObject::blockSignals函数的使用和理解
在某些业务下,需要阻塞住对象某个信号的发送,避免它触发对应的槽影响到后续的操作。可以通过bool QObject::blockSignals(bool block)来做简单的处理。从qt的帮助文档可以了解到,如果blockSignals(bool block)的参数block设置为true,那么信号的发送会被阻塞,反之不会阻塞。而且被阻塞时,发出的信号不会被缓存。即使对象的信号被阻塞住,也对destroyed()信号没有影响。可以通过signalsBlocked()函数来判断某个对象的信号是
2022-03-18 16:08:38
3379
原创 曾经的梦想天真无邪,后来满脑子都是为了钱
有段时间没有更新博客了,总是想写点什么,又感觉没啥可写的。这几个月很忙,但是忙完后这两天坐下来想想,好像做了点什么又好像什么都没做。回想一下感觉这半年来没有很多的进步,更多的沉浸于公司的业务代码迭代和现场bug的处理上了,时间嗖的一下就过去了,有时候下班一回到出租房,那个腰酸背痛的,主要是敲代码是一件比较费神的事情,比如一个标点符号都不能错,不然万一编译没报错,程序运行错误定位不到位置,找起来就累得很。我的亲人们觉得,坐办公室,吹着空调很舒服,不用体力劳动,怎么这样上班也...
2021-10-30 10:22:57
590
1
原创 Qt 在Release 模式下 在控制台显示qDebug的打印信息
1、如下图所示:将Release下的预处理器中QT_NO_DEBUG去除。2、将链接器下的系统中的子系统,修改为控制台
2021-09-23 11:02:49
3237
原创 MFC中LoadLibrary调用Qt动态库失败的原因
今天在不同的电脑用mfc使用LoadLibrary调用qt的动态库,在某些电脑成功,某些电脑又失败。开始以为是宽字符的原因。可以看到在UNICODE编码下,LoadLibrary实际上是LoadLibraryW。于是改成 HMODULE hDll = LoadLibrary(TEXT("qtdialog.dll"));还是失败。网上查了一下,可能是qt的动态库依赖不够,所以用PowerShell中的dump工具查看它的依赖,发现缺少了msvcp140.dll。添加上后,调用正常。在...
2021-06-23 09:51:53
1462
原创 Qt+SDL+ffmpeg 实现音视频播放器
目录主要思路效果核心代码解码:SDL初始化:视频帧渲染:完整工程: 主要思路sdl用于视频的渲染和音频的播放。qt实现播放器客户端,而ffmpeg则用于解码音视频。关于sdl的了解可以参考https://blog.youkuaiyun.com/c_shell_python/article/details/109521840关于ffmpeg,可以参考雷神的博客https://blog.youkuaiyun.com/leixiaohua1020/article/details/15811...
2021-04-12 17:09:27
3565
6
原创 Qt 实现读写xml
目录定义:用途:写入效果:核心代码:定义:XML(Extensible Markup Language)即可扩展标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。用途:XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML则用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。(摘自维基百科)熟悉对xml的操作,在项目开发中非常重要。qt中提供了几种类可以对xml进行处理。本次介绍的是QX
2021-04-12 14:17:29
474
原创 Qt 实现动态矩阵界面
在某些场合,需要呈现多个图表或者界面,但是图表的个数是不固定的。就可以先生成一定数量的父对象,来承接图表。同时在界面预览不够时增加滚动条效果。核心思路:利用Qt布局的QGridLayout-栅格布局与QScrollArea结合效果如下:demo核心代码:for(int i=0;i<200;i++){ LabelModel *label = new LabelModel(this); label->setMinimumSize(100,200); connect(l
2021-04-09 14:19:44
1320
原创 Qt程序 获取windows睡眠和亮屏时的状态
在某些业务需求下,Qt的程序需要感知到windows睡眠和亮屏时状态以便程序做对应的处理动作。好在Qt为我们提供了QAbstractNativeEventFilter类来捕获对应的windows事件。一、步骤如下:1、主界面MyMainWindow类继承QAbstractNativeEventFilter2、重载virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
2021-04-09 13:54:54
2446
原创 Qt之QListWidget实战
介绍QListWidget是一个与QListView类似的列表视图类。作为Qt常用的视图类,它提供了很多简便的函数,方便对列表中的项进行展示和操作。当项大于窗口高度时,会自动弹出滑动条。以下是QListWidget的添加项、删除项、清空列表、重命名,右键菜单弹出,双击事件等功能。重命名效果所有代码头文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QListWidget>
2021-03-01 10:04:50
2513
原创 Qt实现 QOpenGL绘制彩色三角形
QOpenGLWidget类封装了opengl,比起原生的opengl,使用起来很方便。只需要让子类继承QOpenGLWidget。OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、
2021-01-16 12:24:59
1126
原创 PyQt实现 计数器--快速掌握python开发桌面软件
目录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程序的主要选择,其丰富的类库和一份代码不同编
2021-01-16 10:30:16
1518
8
原创 4年饮冰,难凉热血
目录近期曾经20202020工作2020买房2020年底没有写总结,因为前段工作时间太忙了,之前为了赶一个软件,996了很多天,有一天晚上下班的时候,保安大叔还特地嘱咐我太晚不要骑单车了,还有公交,感觉很暖心,人间自有温情在。今天写这篇文章就当是2020的总结了,时间比较少,可能有点乱,大家请随意看看。近期最近在搞测试工具的开发,因为不单单对一两个服务器做压测,可能需要20-50个数量级别都有可能,所以今天下午在线程池,到时候方便把对应服务器状态数据展示在界.
2021-01-14 22:44:43
602
1
原创 Qt实现 结合opencv播放mp4
目录1、opencv介绍2、效果图3、下载并编译opencv源码,生成DLL4、核心代码1、opencv介绍opencv的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库,底层代码由C++编写,拥有c++、python、java等接口。因为其跨平台特性,被广泛运用于:人脸识别,图像处理、人机交互等领域。2、效果图本项目实现了通过opencv+qt播放视频的功能。其中用qt制作前端,opencv负责处理视频的解码过程。
2021-01-10 21:01:58
1712
2
原创 我们一起玩python之 元组和字典
元组概念元组和列表很相似,不同点是列表是用[]方括号把元素包裹起来,而元组是用()小括号。与此同时,元组也不能修改里面的元素,这也是和列表的不同点。元组的创建很简单tup=() 就是创建了一个名为tup的空元组。tup=(1,) 表示创建一个只有1个元素,数值为1的元组。需要注意的是,即使只包含1个元素,也需要在tup=('1','3','5') 表示创建了一个含有1、3、5元素的元组。...
2021-01-09 15:55:43
281
原创 ubuntu--实战小经验
目录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
2021-01-09 13:24:09
735
4
原创 shell--实战小经验
目录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
2021-01-09 13:10:32
358
原创 Qt实现 自定义矩阵布局
当界面需要同时展示多个项的时候,可能需要一个矩阵来填充数据,因为不知道数据项的多少,所以自定义行列就显得尤为重要,比如可能需要在一台电脑同时显示多个报表的数据,如果一直切换,因为无法比较各个报表的数据,难免不够直观,这种时候,通过矩阵布局同步显示一般是首选方案。效果展示:本次采用的技术是qt,思路是通过在矩阵上布局对应的控件,以搭载数据的显示,这样子数据就可以放到对应的承载控件上显示。通过行列号的设置来随时切换布局效果,矩阵同时支持随主界面大小的改变而改变,以适应不同的场景需求。
2021-01-08 21:41:39
1644
原创 我们一起玩python之 条件语句和循环语句
目录1、条件语句2、循环语句1、先看for循环2、while循环3、continue4、break5、循环语句嵌套因为这部分内容简单易懂,在编程却又必不可少,所以把它们归为一个部分来介绍。结合代码讲解应该更能让初学者加深体会,编程的过程应该就是动手敲的过程,所谓看几遍不如敲一遍,做好技术无他法,唯手熟尔。1、条件语句条件语句即通过判断条件为真(true)或假(false),来决定程序的执行走向。python中条件语句的基本形式是if 判断条件:
2021-01-06 23:48:13
459
原创 都说人生苦短,我用python,那么python是什么?
目录1、python是什么?2、需要掌握python的几个理由3、python的主要开发方向4、常用Python的集成开发环境(IDE)软件5、安装python6、运行我们的第一个python程序1、python是什么?python是一门解释型语言,它的底层由C语言编写,解释型的意思是解释型语言的程序不需要在运行前编译好,在运行程序的时候才翻译,由专门的解释器负责在每个语句执行的时候解释程序代码。比如c和c++就需要先编译再运行,它们就属于编译型语言。当然也正是.
2021-01-06 21:49:55
455
转载 UDP 单播、广播和多播
转载于:https://www.cnblogs.com/jingliming/p/4477264.html使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局...
2020-12-04 16:34:14
614
原创 c++ 初始化成员列表
在c++中,初始化一般有两种方式,一种在构造函数内通过赋值初始化,一种是通过初始化列表初始化。下面通过对两者进行比较,来分析初始化成员列表和构造函数内赋值的优缺点。一、构造函数内赋值:class Text {public: Text() { std::cout << "I'm Text Construction" << std::endl; } Text(int num):_num(num) { std::cout << "I'm Text
2020-12-01 23:05:18
417
1
原创 使用ubuntu18遇到的一些坑
换了新电脑,很多软件都在重新安装,其余的都一路无阻,唯独装这个Ubuntu,花了挺长时间,感觉每次装遇到的坑都不一样,属实难顶。第一坑:vim使用异常,插入模式时左右移动会显示无名字母百度查询到:sudo apt-get remove vim-commonsudo apt-get install vim故remove之。然后install vim。以为完事了,真轻松。结果提示无法安装vim--,建议更新update。那就update吧。然后sudo apt-get update。结果提
2020-11-27 10:38:10
331
原创 Qt实现 在Thread子线程里处理耗时业务
目录1、QThread2、何时使用线程3、不使用多线程会有什么现象4、使用线程处理耗时操作5、线程退出注意点1、QThreadQThread类提供了一种独立于平台的方式来管理线程。一个QThread对象管理一个线程。QThread在run()中开始执行。通过start()启动线程,quit()和wait()结合来退出线程。2、何时使用线程当需要处理比较耗时的操作,不希望影响到主界面的操作时,就可以考虑使用线程,来承接那部分耗时的任务。3、不使用多线程会有什么.
2020-11-21 16:53:19
2723
原创 大白话描述如何理解多线程
多线程就是多条线程,多条线程一起工作避免不了资源抢占的问题,互斥锁之类的同步机制是为了避免这种问题。什么场景下需要使用多线程。比如大家最常用的迅雷下载,如果只是单线程工作,将可能出现界面响应缓慢,卡死之类的问题,造成用户体验差。如果我们做一个下载器,用多线程工作,多线程负责下载之类的耗时操作,主线程展示界面,响应用户事件。用户下载一个东西A,就开辟一条线程A去处理,再下载一个东西B就再开一条线程B,因为A、B线程互不影响,各自独立,如果需要使用到可能都会用到的变量,就加上互斥锁去同步。想到
2020-11-18 09:34:40
320
原创 Qt实现 内嵌CEF3制作浏览器(尾篇)
int main(int argc, char *argv[]){ //初始化cef bool flag = CefManager::instance()->CefInit(); if (!flag) { return -1; } QApplication a(argc, argv); QtCef w; w.show(); int ret = a.exec(); CefManager::instance()->CefQui...
2020-11-16 21:57:34
6959
1
原创 0x752940B2(KernelBase.dll)(xxx.exe中有未经处理的异常:0xE0000008)
今天在vs使用qt scaled扩大图片的时候,偶尔崩溃,提示这个错误。原因:WIN32程序内存不足解决方法:不要scaled图片过大一劳永逸的办法:改为x64编译,麻烦的就是需要提供各种依赖库的64位版本,win32内存上还是有很多不足的...
2020-11-16 14:31:02
5302
1
翻译 ffmpeg库主要函数功能
最近在用ffmpeg做项目,对其中使用到的函数做一个归纳。一、其中代码如下:1、av_register_all()功能:初始化libavformat并注册所有相关的组件、协议2、avformat_network_init()功能:对网络库进行全局初始化。不过这是可选的,目前不再推荐。3、avformat_alloc_context()功能:初始化AVFormatContext结构体指针。使用avformat_free_context()释放内存。4、avfor
2020-11-15 11:18:26
1039
1
原创 Qt实现 基于ffmpeg拉流播放视频
1、前言ffmpeg作为开源库,具备跨平台性,被广泛使用于各大视频软件和网站,在视音频开发中占有极其重要的地位。Qt同样支持跨平台,因此结合qt+ffmpeg制作跨平台视频播放器是比较合适的做法。2、思路目前有一个界面类和解码类,其中界面类负责视频的显示工作,解码类的解码过程运行在子线程中,避免解码在主线程中进行,影响界面播放效果。二者的信息交互通过qt的信号槽关联,视频的绘制则采用QPainter绘制。3、采用技术如下1、QThread线程类2、QPainter绘制类3、F
2020-11-15 01:02:27
5478
4
原创 Qt实现 SDL嵌入Qt窗口中绘制图片
1、SDLSDL用C编写,可与C ++一起使用,并且可用于其他几种语言,如C#和Python,支持Windows,Mac OS X,Linux,iOS和Android,是一套开放源代码的跨平台开发库。SDL多用于开发媒体播放器、游戏等多媒体应用领域。首先需要下载SDL,引入其头文件和库SDL下载地址:http://www.libsdl.org/因为我是用vs2015开发,所以下载的是上面这个。首先在代码中需要引入SDL头文件和库。#include "SDL.h"#unde
2020-11-05 22:46:01
5205
7
原创 c++设计模式汇总
设计模式起源GOF首次在书中提到设计模式的概念,他们所提出的设计模式原则主要是针对接口编程而不是对实现编程,优先使用对象的组合而不是继承。学习设计模式的好处设计模式经过了长时间的发展,是一套被反复使用的代码设计经验的总结。它们不仅提供了软件开发时面临的一些问题的解决方法,还能强化对面向对象编程和对接口编程的掌握理解,使得代码有更高的重用性和扩展性。设计模式入口:创建型模式工厂方法模式抽象工厂模式单例模式建造者模式原型模式结构型模式:适配器模式桥接模式.
2020-11-01 20:29:07
275
原创 Qt实现 获取程序所在的各种路径
记性不好,权当记录一下1、返回包含exe的目录(绝对路径)QCoreApplication::applicationDirPath()如D:/qt_coding/build/debug2、返回exe可执行文件的路径(绝对路径)qApp->applicationFilePath()如D:/qt_coding/build/debug/test.exe3、返回exe当前目录(绝对路径)QString QDir::currentPath()如D:/qt_coding/build4、
2020-10-24 11:48:51
4955
原创 Qt实现 内嵌CEF制作浏览器(首篇)
介绍cef支持跨平台,是基于Chromium的开源浏览器控件,全称Chromium Embedded Framework。本文主要介绍如何下载cef以及编译windows下的cef项目,并运行查看浏览器显示效果。QT内嵌CEF优势:Qt自带QWebEngine模块,可以快速实现浏览器,但是在实际使用中,在某些AMD显卡电脑运行使用了QWebEngine的qt软件,会卡顿甚至奔溃,坑还是比较多的。选择cef就可以避免这种问题。开发准备cef下载网址:http://opensource.sp
2020-10-20 14:53:57
24051
16
原创 Qt实现 访问web并解析json数据
浏览器访问qt访问并解析#include "widget.h"#include "ui_widget.h"#include <QNetworkAccessManager>#include <QNetworkReply>#include <QJsonDocument>#include <QJsonObject>#include <QEventLoop>#include <QDebug>Widget::Wid
2020-10-20 11:28:18
1861
1
原创 我们日复一日努力奋斗的目的是什么
敲代码久了,发现慢慢变宅了,愿意宅在家看看开源作品,玩玩2k,也不愿意出去打场篮球,说好的每天20个俯卧撑,也不知道是某天因为某件事件给耽误, 然后再也没有想起来,仿佛回到大学的时候,自从弯腰捡起了地上的笔,就再也听不懂傅里叶变换是什么回事。看着慢慢变大的肚子,长吁短叹,再看着卡里的余额,满目沧桑。打开手机微信,几百个好友却没有可以聊天的人。回归正题,我们日复一日努力奋斗的目的是什么?时间回到小学,我那时候想,为什么要每一天都去上学,只想快点长大,就可以像大人一样赚钱,这样就可以买很多喜欢的奥特曼,
2020-08-04 17:24:20
688
2
原创 平时写c++程序需要注意什么
记一些几年前写c++经常会犯的一些错误,想到了其他的后面再加上1、变量、函数命名不规范。如果一个变量命名随意,比如表示一个学生的年纪,如果这样定义int a;相信一个月后自己再看代码,都不知道a表示什么意思,如果用int age; 来表示,就清晰很多了。再说函数,如果需要一个连接数据库的函数,写成connect();这是connect什么呢。如果写成connectDatabase()就很清晰了。2、传递指针没有判断是否为空。传递对象、变量没有判断是否有效。如果有一个接口是 void
2020-08-04 16:28:26
988
2
getExeVersion.exe
2020-03-08
VA_X_Setup2074.rar
2020-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人