- 博客(316)
- 资源 (24)
- 收藏
- 关注

原创 C++ Qt视频教程
该教程是我个人的Qt开发工作总结,Qt内容较多,目前已更新104节,后续会继续更新,需要了解Qt开发知识的可以私信我,我会在找时间在课程中陆续更新。 课程链接,请点击:https://edu.csdn.net/course/detail/30578 可以加我的qq群,一起学习Qt。...
2020-11-05 23:42:10
766
原创 QMdiArea在多窗口切换时无法接收键盘事件
QMdiArea的用途很多,例如我们用的开发环境,都是多文档的 形式,可以用这个类来实现,不过也一些坑,例如标题栏需要自己定制,达不到浏览器那种效果,键盘事件的接收可能需要自己处理,例如, 做一个文本编辑软件,在切换窗口时会触发subWindowActivated信号,然后根据各个子窗口 对象,设置相关属性。connect(ui.mdiArea, &QMdiArea::subWindowActivated, [=](QMdiSubWindow *pSub) { FileW...
2021-01-11 22:32:04
45
原创 C++ boost库教程之内存池
Boost Pool 库提供了一个内存池分配器,它是一个工具,用于管理在一个独立的、大的分配空间里的动 态内存。当你需要分配和回收许多不的对象或需要更高效的内存控制时,使用内存池是一个好的 解决方案。 Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况。使用pool内存池主要有以下两个优点: (1) 能够有效地管理许多小型对象的分配和释放工作,避免了自己去管理内存而产生的内存碎片和效率低下问题。 (2)告别...
2020-12-07 23:53:00
190
原创 Qt点击按钮弹出菜单以及按钮箭头样式的处理
在Qt中点击按钮弹出菜单,这功能很好写,调用QPushButton的setMenu方法即可,但是,这种点击按钮弹出菜单的效果是很不爽的,需要两次点击才弹出菜单,第一次点击按钮右侧出现箭头,第二次点击才弹出菜单,而且菜单不是居中显示,这些问题该如何处理呢。 点击按钮弹出弹出菜单的代码m_pSetMenu = new QMenu(this);QAction *pAct1 = new QAction("game mode", this);QAction *pAct2...
2020-12-06 23:04:06
330
原创 Qt界面无法切换输入法的解决方法
在有些项目中,可能需要在 widget上切换输入法,进行文本输入,进行标注;但是,不管怎么按shift都无法切换中英文,在MFC的对话框中也一样,但是单文档,多文档却可以,这是什么原因呢,难道是Qt的bug? 要解决这个也不难,由于输入事件在widget中默认没有处理,需要在窗体构造函数中进行设置,添加几行代码即可,如下:this->setAttribute(Qt::WA_InputMethodEnabled, true);this->setAttribute(Qt::W...
2020-12-06 20:24:23
167
原创 C++指针做形参与指针的引用做形参的区别
在C++编程时,有时需要用指针做参数,并在调用函数后,改变指针的内容。例如下面的程序 (1)*p直接修改指向的内容#include<iostream>using namespace std;void func(int *p){ *p = 456; //修改了指针指向的值}int main(){ int num = 123; int* pN = # cout << *pN << "地址" <&...
2020-12-04 20:40:25
112
原创 Qt实现光标线段闪烁效果
有时某些特殊需求需要实现类似光标的闪烁效果,例如下图: 这种效果用计时器可以实现,光标线段在paintEvent事件中进行绘制,两次绘制,根据时间的变化改变画笔的颜色即可,空白的线段的颜色和背景色保持一致,这样就实现了闪烁,代码如下 头文件:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }...
2020-11-26 20:53:30
238
原创 C++ 系统宏定义 windows mac linux android ios
C++ 系统宏定义#ifdef _WIN32 //define something for Windows (32-bit and 64-bit, this part is common) #ifdef _WIN64 //define something for Windows (64-bit only) #else //define something for Windows (32-bit only) #endif#elif __APPLE__
2020-11-13 01:03:16
106
原创 VLC Qt视频播放器开发指南
VLC的音视频编解码是对ffmpeg的封装,用FFmpeg可以开发视频播放器,推拉流,同样用VLC也可以,某些时候可能比ffmpeg还要简单点。本篇博客介绍VLC Qt视频播放器开发的预备工作。 开发环境:VS2017, Qt5.12_x64, win10 首先需要获取VLC的SDK, 3.0版本的VLC安装后只有dll, 没有头文件,lib库...
2020-11-09 23:37:29
778
原创 C++学习书籍推荐
如果你想学习C++, 没必要先学C语言,C++学会了绝对会C语言。如果会C语言,再学C++会轻松一些。建议直接学习C++。下面推荐一些我读过的C++书籍, 我不是打广告,作者也没给我钱。纯属个人建议一 入门篇(1)C++ Primer, 本书提供了全部示例的源码,而且打印很好,字体大小合适,看着也舒服,可以花点时间多读几遍(2)C++ Primer plus, 不建议读,讲的太啰嗦了,而且字体很小,看着对眼睛不好。二提高篇(1)侯捷大师翻译的 C++ 内功心法,...
2020-11-09 01:04:22
304
1
原创 C++设计模式:原型模式
定义:Prototype 模式, 用原型实例来指定出创建对象的总类,并且通过拷贝这些原型来创建新的对象。使用场景1.当一个系统应该独立于它的产品创建、构成和表示的时候; 2.当要实例化的类是在运行时刻指定的时候,如通过动态加载; 3.为了避免创建一个与产品类层次平行的工厂类层次时; 4.当一个类的实例只能有几个不同状态组合中的一种时。代码实现以电脑的生产来说,利用原型模式的概念,来分别生产不同品牌的电脑;该模式的主要特点是针对一个多个相似对象的情况,提供一个快速生成对象的方式。例如在本例
2020-11-08 23:58:54
105
原创 C++设计模式:建造者模式
建造者模式,又称为builder模式。定义:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 。使用场景:当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。使用建造者模式有什么好处:建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了 该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。代码实现:#include<string>#include&.
2020-11-08 23:57:09
126
原创 C++设计模式:工厂模式
我们先看工厂模式的介绍这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。简单来说,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽象工厂模式,每个实现方式都存在优和劣。1、简单工厂模式假想你是一个温州鞋老板,资金不多,代理.
2020-11-08 23:54:53
137
原创 C++设计模式:适配器模式
什么是适配器模式? 适配器它是主要作用是将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式有两种:1.类的适配器 2.对象适配器,对象适配器更多一些。代码示例#include <iostream>using namespace std;//目标接口class CTarget{public: CTarget() {} virtual ~CTarget() {} vi...
2020-11-08 23:51:09
106
原创 QSlider qss美化 -- 暗黑效果
QSlider在界面开发中是比较常用的控件,默认样式不太好看,如下:用qss可以美化QSlider的效果,如下图:qss代码水平的QSliderQSlider{ background-color: #363636; border-style: outset; border-radius: 10px; }QSlider::groove:horizontal{ height: 12px; background: qlineargradient(x1:0,
2020-11-07 14:00:06
325
原创 QProgressBar qss 样式表-无边框暗黑样式
Qt的进度条QProgressBar的默认外观如下用qss可以改变它的样式,例如修改后的进度条样式如下qss代码如下,仅供参考QProgressBar#progressBar{ border:none; /*无边框*/ background:rgb(54,54,54); border-radius:5px; text-align:center; /*文本的位置*/ color: rgb(229, 229, 229);
2020-11-07 13:07:48
361
原创 QImage的深拷贝与浅拷贝
最近在 做项目时,被QImage深深的坑过,之前也没遇到过,来看看如何构造一个QImage, 查看头文件可知,有如下几种构造方法: QImage() Q_DECL_NOEXCEPT; QImage(const QSize &size, Format format); QImage(int width, int height, Format format); QImage(uchar *data, int width, int height, For...
2020-11-05 23:39:49
182
原创 Qt剪切板类QClipboard图片文本的复制与粘贴的使用介绍
Qt的复制功能比较简单,代码如下:QClipboard *pClip = QApplication::clipboard();pClip->setText("Hello Qt, 这是Qt复制的内容");需要包含的头文件#include <QClipboard>#include <QApplication>
2020-10-28 21:08:24
325
原创 C++11关键字constexpr看这篇就够了
一、在普通函数中的使用例如下面的代码,数组的大小必须是常量,在声明数组array时,用函数返回值,此时会报错:error C2131: 表达式的计算结果不是常数note: 对未定义的函数或为未声明为“constexpr”的函数的调用导致了故障用constexpr关键字可以解决这种问题,在GetLen函数前加constexpr声明,代码如下:当然,constexpr修饰的函数也有一定的限制: (1)函数体尽量只包含一个return语句,多个可能会编译出错; ...
2020-10-26 23:50:46
418
原创 VS西红柿插件添加注释
C++在VS下开发时不像C#,没有快速注释,不过可以自己设置,当然在VS中可以设置,西红柿插件中也可以设置,找到如下界面,点击进去后,在左侧点击new,新建一个快速操作,快捷键可以自己设置,例如我把注释设置成了 z. 添加以下内容/****************************************************************************** @函数功能 : * @参数1 : * @参数2 :*...
2020-10-24 11:29:50
196
原创 C++11 initializer_list用法
initializer_list提供了新的初始化方式,例如需要在形参中传入多个值,可以用数组实现,C++11提供了新的初始化方式也可以实现,使用前需要包含头文件 #include <initializer_list> 例如求和#include <iostream>#include <initializer_list>using namespace std;int Sum(const initializer_list<i...
2020-10-17 00:50:48
165
原创 python opencv显示图片与保存图片
在pycharm中输入以下代码import cv2img = cv2.imread("D:/image/1.jpg", cv2.IMREAD_GRAYSCALE)cv2.imshow("imagewindow", img)cv2.waitKey(0)cv2.destroyAllWindows() 运行结果 在上述代码中用的灰度图的模式进行显示,进入参数声明可知有很多种显示格式,例如下面四种:IMREAD_ANYCOLOR = 4IMREAD_A...
2020-10-17 00:48:53
150
原创 SDL窗口创建与显示
SDL创建窗口有相应的步骤,如下(1)调用SDL_CreateWindow,(2)创建渲染器SDL_CreateRenderer,(3)显示,调用SDL_RenderPresent,在显示前最好清空之前的显示,调用SDL_RenderClear, 根据上述步骤,编写SDL窗口代码,如下:#include <iostream>#include "SDL.h"using namespace std;int main(int argc, cha...
2020-10-11 20:08:55
220
原创 Qt开源日志模块QsLog使用方法
C++常用的日志库有log4cplus, log4cpp等,Qt4也有一个比较老的日志库log4qtgilthub链接:https://github.com/victronenergy/QsLog在example下有QsLog的使用方法,双击log_example.pro即可加载所有example程序,如下图加载之后的项目结构QsLog日志级别enum Level{ TraceLevel = 0, DebugLevel, InfoLevel, W...
2020-10-10 22:49:07
315
原创 windows python opencv开发环境配置(亲测有效)
先检测电脑是否有python opencv环境,依次输入 python import cv2 cv2.__version__ 如果出现了opencv版本,说明电脑里有python opencv环境,如果显示no opencv modle之类的提示,那就是没有opencv环境。 windows python opencv安装步骤: (1) 先安装python(2)python安...
2020-10-05 22:36:04
137
原创 Qt解析xml文件
先来看看什么是xml. XML是可扩展标记语言(Extensible Markup Language,XML)缩写,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 例如下面是一个xml格式的文件:<?xml version="1.0" encoding="UTF-8"?><Msg> <Data id="1"> <Number&...
2020-10-03 22:39:18
171
2
原创 推荐一个很全的Qt qss, 你想要的都有
链接:https://github.com/mstuttgart/qdarkgraystyle.git 下载后,可以把其中qss相关的部分copy下来,例如我的目录 手上积分有多余的,可以直接下载我上传的文件,【点击即可下载】。 把qrc文件加到项目中后,就可以直接使用,主要是暗黑主题,可以去修改style.qss,既可改变相应的样式。 视频教程链接:【点击观看】 喜欢Qt开发的可以关注我的Qt专栏和...
2020-09-29 00:18:47
463
原创 VS Qt项目转成QtCreator项目
例如下面是一个VS2017 Qt5.12.8项目代码文件可以看出在代码文件中没有.pro文件,也就是说该工程无法用QtCreator打开, 我们可以的VS中的Qt插件生成.pro文件,点击11
2020-09-27 23:36:58
386
原创 QString转wchar_t*
const wchar_t* wstr = reinterpret_cast<const wchar_t *>(fileName.utf16());
2020-09-27 01:21:26
389
原创 Qt Tcp通信,简单聊天程序的编写
Qt Tcp通信和windows的类似,分服务端和客户端,模型如下 windows的Tcp通信可以看这篇文章:【请点击查看】 Qt的Tcp主要涉及到两类,QTcpServer和QTcpSocket, 对于服务端需要两个socket, 一个用于监听客户端连接,也就是QTcpServer,另一个用于和客户端通信, 也就是QTcpSocket; 客户端只需要一个socket. 写一个简单的demo, 服务端和客户端各用一个窗口表示 代码大同小异,服...
2020-08-23 16:47:17
419
原创 git pull --rebase的作用是什么,它与git pull有什么区别?
在push代码时,会提示使用git pull命令,也就是拉取远端代码,更新我们的仓库,那么为什么又要加个 --rebase命令呢?下面来说说这个问题,先从这两命令开始。 git pull = git fetch + git merge FETCH_HEAD git pull --rebase = git fetch + git rebase FETCH_HEAD 二者的区别是,在fetch之后的操作不同,merge与rebase的不同。 ...
2020-08-23 03:39:01
1334
1
原创 VS2019 Qt开发环境搭建与配置
Qt是很优秀的图形界面跨平台开发框架,开发语言可以用C++, 也可以用python, 建议使用C++。windows上Qt开发环境可以使用QtCreator, 也可以使用VS + Qt, VS开发调试功能强大,本篇介绍VS2019 + Qt5.14开发环境的配置, 其它版本的类似。 VS下载链接:https://visualstudio.microsoft.com/zh-hans/vs/ VS2019 C++主要安装模块: 不...
2020-08-15 01:07:19
6964
5
原创 QMenu qss应用介绍与演示
qss可以应用于控件也可以应用于菜单QMenu, 正常的菜单字体比较小,选择项颜色也不能设置,用qss之后就可以任意修改了,如下图: qss代码如下QMenu::item { font:16px; background-color:rgb(253,253,253); padding:8px 32px; margin:0px 8px; border-bottom:1px solid #DBDBDB;}/*选择项设...
2020-08-15 00:44:13
246
原创 Qt右键菜单的实现介绍与代码演示
某些软件需要实现右键菜单,如下: 可以添加快捷键,分割线,在点击的同时,又可以 用快捷键操作。 实现起来也不难,重写contextMenuEvent方法,该方法如下 [virtual protected] void QWidget::contextMenuEvent(QContextMenuEvent *event) This event handler, for event event, can be reimplemented in a sub...
2020-08-14 00:07:19
344
原创 Qt控件自绘:温度计控件
Qt本身只提供了一些基本控件,如果想搞一些复杂的,即使用上qss, 有些复杂的控件也还是无法实现的,例如汽车仪表盘, 电池容量等, 这些是 需要自己绘制,再实现相关信号槽,才能达到效果。例如下图 的温度计: 根据温度不同显示不同的温度标识,这种不规则的图形,用基本控件是无法实现的, 一般需要美工 画好图像,程序员根据图形做叠加绘制,下面就上面的温度计的实现做说明,并提供完整代码。 新建一个Qt GUI项目,我的项目名Wenduji, 在界面Qt Designer上...
2020-08-09 00:11:22
550
原创 二叉树的定义与C++实现
树,是有限节点的集合。生活中的树是树根在下面,数据结构中的树的根在顶部,如下图: 公司的人员组织架构,董事长,总经理,副总。。。,这种模型可以用二叉树表示,还有一些压缩算法也用到了树结构。树的几个概念(1)度:有几个直接的孩子,例如,A的度是3,它有BCD三个孩子,B的度是2,它有EF两个孩子,度为0的节点也就是叶子节点(终端节点)(2)祖先:E的祖先是B,A , 从当前节点一直往上找(3)叶子节点:下面的一层称为叶子节点,也可以称为终端节点。(...
2020-08-01 21:49:04
129
原创 Qt仪表盘控价QDial的使用介绍
仪表盘控件QDial在Qt Designer的input widgets 模块,如下图: 仪表盘在车载行业用的比较多,显示车速,油量等信息, 拖拽一个QDial、QPressBar到界面上,如下图: QDial是一个Slider, 派生于QAbstractSlider,也继承了它的信号,例如当仪表盘的值变化时,就会触发 valueChanged,这些都是它的父类QAbstractSlider的信号,如下:Q_SIGNALS: void valu...
2020-07-25 20:07:18
386
原创 QWebEngineView使用说明
QWebEngineViw是网页控件,他可以显示和编辑web文件。例如显示我的博客主页,可以拖动显示: 使用 QWebEngineView 需要添加该模块,例如在.pro文件中添加:QT += core gui webenginewidgets 在头文件添加一个成员 QWebEngineView *m_view,代码如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidg...
2020-07-20 23:30:22
499
原创 C++ STL multimap与unordered_map
一 multimap用法说明 multimap, 允许元素重复的关联容器,它的内部实现也是用的红黑树,例如下面的代码#include <iostream>#include <map>#include <string>using namespace std;int main(){ multimap<int, string> mmap = { {3, "鲁班"}, {2, "后裔"} }; mmap.insert(mak...
2020-07-17 22:48:50
208
原创 beyond compare git冲突解决配置
初始化仓库后,在系统目录就会生成.gitconfig文件,找到这个文件 "C:\Users\Alpha\.gitconfig" 添加如下内容[diff] tool = bc4[difftool "bc4"] cmd = \"C:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" [merge]...
2020-07-12 16:16:22
180
基于FFmpeg Qt的视频播放器完整源码
2019-01-14
OpenCV Qt打开摄像头实现监控与捕捉
2018-04-03
支持向量机通俗导论(理解SVM的三层境界)PDF
2018-04-13
ffmpeg解码音视频并同步播放
2018-06-09
很全的 Qt qss
2020-09-29
jsoncpp_sdk_x64.rar
2020-04-06
侯捷:左手程序右手诗(电子书)PDF
2019-06-07
C# TCP网络通信示例:多人聊天发文件
2018-04-02
C++/OpenCV2.4.9 数字精确识别源码
2017-11-02
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝