4 令狐掌门

我要认证

寒江孤影,江湖湖人,相逢何必曾相识。

等级
TA的排名 9k+

Qt控件自绘:温度计控件

Qt本身只提供了一些基本控件,如果想搞一些复杂的,即使用上qss, 有些复杂的控件也还是无法实现的,例如汽车仪表盘, 电池容量等, 这些是 需要自己绘制,再实现相关信号槽,才能达到效果。例如下图 的温度计: 根据温度不同显示不同的温度标识,这种不规则的图形,用基本控件是无法实现的, 一般需要美工 画好图像,程序员根据图形做叠加绘制,下面就上面的温度计的实现做说明,并提供完整代码。 新建一个Qt GUI项目,我的项目名Wenduji, 在界面Qt Designer上...

2020-08-09 00:11:22

二叉树的定义与C++实现

树,是有限节点的集合。生活中的树是树根在下面,数据结构中的树的根在顶部,如下图: 公司的人员组织架构,董事长,总经理,副总。。。,这种模型可以用二叉树表示,还有一些压缩算法也用到了树结构。树的几个概念(1)度:有几个直接的孩子,例如,A的度是3,它有BCD三个孩子,B的度是2,它有EF两个孩子,度为0的节点也就是叶子节点(终端节点)(2)祖先:E的祖先是B,A , 从当前节点一直往上找(3)叶子节点:下面的一层称为叶子节点,也可以称为终端节点。(...

2020-07-29 23:56:54

Qt仪表盘控价QDial的使用介绍

仪表盘控件QDial在Qt Designer的input widgets 模块,如下图: 仪表盘在车载行业用的比较多,显示车速,油量等信息, 拖拽一个QDial、QPressBar到界面上,如下图: QDial是一个Slider, 派生于QAbstractSlider,也继承了它的信号,例如当仪表盘的值变化时,就会触发 valueChanged,这些都是它的父类QAbstractSlider的信号,如下:Q_SIGNALS: void valu...

2020-07-25 20:07:18

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

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

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

Qt5.9 5.12等高版本的安装问题

Qt5.9之后的版本,安装时需要登陆,不然无法next,因此在安装时建议先断网,next之后可以把网络再连上,不管是windows还是mac都有这种现象。

2020-07-11 18:45:25

C++ STL map使用详细介绍(插入,遍历、查找,删除,仿函数自定义map排序)

简单说说C++ STL map的特点,map是有序键值对,默认是按key值递增存储,可以理解为函数有递增趋势的函数f(x, y),既然是函数,那么一个x只能对应一个y, 而一个y可以有多个x对应,也就是说,在map中,key不能重复,value可以重复。 至于map的内部实现红黑树,本篇就不说了,太多了,扯不清楚。主要说说map的基本使用。 map的声明 map<keyType, valueType>...

2020-07-11 01:33:31

git fatal: The current branch master has no upstream branch. There is no tracking information for。。。

当你在本地创建了仓库,远程也创建了仓库,或者之前和远程做了连接,但是你重装系统了,再次从远程拉取或者push代码时,就会出现如下错误: There is no tracking information for the current branch或者 fatal: The current branch master has no upstream branch. 不管是git push,还是git pull --rebase,...

2020-07-10 23:25:47

C++ boost ref 引用类型介绍

boost库提供了一种“强引用”类型,标准C++的引用类型,一旦指向类型,就不能改变它的值,boost的ref类型可以进行修改值,++等操作。 boost引用库是在ref.cpp文件的reference_wrapper内,使用前要包含图文件 #include<boost/ref.hpp> reference_wrapper很小,它是一个模板类,代码不多...

2020-07-06 23:28:04

C++ boost库开发环境配置

最近有小伙伴看了我的教程,被C++ boost开发环境的配置难住了,我在写博客时觉得C++程序员应该对SDK的配置很熟悉,就没着重介绍,本篇详细介绍VS2017 C++ boost开发环境的配置,其它库的配置也类似。 像boost, ffmpeg, opencv, SDL, halcon等,这些SDK, 一般都是包含以下三种文件(1)头文件 .h或.hpp, 用hpp做后缀的,是把声明和实现放一起了;(2)静态库 .lib文件;(3)动态库.dll文件,该类文...

2020-07-05 22:30:16

C++ boost库智能指针(四):intrusive_ptr

intrusive_ptr这个智能指针不怎么好用,虽然它和shared_ptr也是基于引用计数的,但需要自己来实现引用计数的增加与减少。需要在我们管理的指针对象中添加一个计数的成员,例如下面的类Test. 头文件:#include <boost/intrusive_ptr.hpp>class Test{public: Test() { _iCount = 0; cout << "构造" << endl; } ~Test...

2020-06-23 00:08:37

C++ boost库智能指针(三):weak_ptr

weak_ptr是shared_ptr得到协助者,可以观察shared_ptr是否过期,weak_ptr不改变引用计数,也不能使用 *,->操作符,是一个很弱的智能指针。例如下面的代码:#include <iostream>#include <boost/make_shared.hpp>#include <boost/weak_ptr.hpp>using namespace std;using namespace boost;cl...

2020-06-22 23:08:12

C++ boost库智能指针(二):shared_ptr和shared_array

shared_ptr是boost最重要的智能指针,最像智能指针的"智能指针",由于它的优越表现,被加入了C++11标准。 shared_ptr与scoped_ptr —样包装了 new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针,可以被自由地拷贝和赋值,在任意的地方共享它,和scoped_ptr、auto_ptr一样重载了“*”和“->”,用get()可以获取被管理的指针,也没有算术操作符,同样也不能管理数组内存,当没有代码使用(引用计数为0)它时...

2020-06-21 21:33:43

C++ boost库智能指针(一):scoped_ptr 与 scoped_array

使用scoped_ptr需要包含的头文件#include <boost/scoped_ptr.hpp> 相比于auto_ptr, boost的scoped_ptr对指针的使用权进行转移,这是因为在scoped_ptr内部对拷贝,赋值做了私有化:template<class T> class scoped_ptr // noncopyable{private: T * px; scoped_ptr(scoped_ptr const &amp..

2020-06-21 17:43:12

C++ 标准库智能指针auto_ptr源码分析

智能指针是C++标准中一个很重要的内容,它帮C++程序员解决了部分内存开辟与释放的问题,使C++程序员可以和java, C#一样不为内存泄露而担心。使用智能指针需要包含头文件#include <memory> C++标准的智能指针主要有4个,auto_ptr, unique_ptr、shared_ptr 和 weak_ptr 。另外boost库,Qt也有智能指针. auto_ptr是C++98提出的比较早的智能指针,在C++11以后已经不建议使用了,但是分析它的源码...

2020-06-20 21:12:10

Qt响应ctrl 鼠标滚轮字母等组合按键

一般的软件会有很多组合快捷键,例如QQ截图ctrl + alt + A,微信截图 alt A,看PDF时ctrl +鼠标滚轮进行缩放等。Qt对这些快捷键都有了实现,下面分别对这些功能做介绍并提供代码实现。1鼠标按键 重写mousePressEvent方法就可以实现对鼠标按键的控制,如下: void mousePressEvent(QMouseEvent *event); 常用的鼠标按键 LeftButton ...

2020-06-17 00:27:12

C++数据结构:普通队列与循环队列

什么是队列? 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。队列分类 普通队列与循环队列,普通队列可以看做是一列数据,环形队列可以看做是一个圆,当普通队列的数据索引可以循环设置时,普通队列就成了循环队列。这两种都可以用数组来实现。循环队列的C++实现 下面说明用数组实现循环队列的方法...

2020-06-14 22:32:24

MFC CArchive类读写文件的应用

一 写文件 CFile和CArchive进行绑定,CArchive把数据写到文件中,代码如下: CFile file; BOOL isOk = file.Open(L"1.txt", CFile::modeCreate | CFile::modeWrite); if (!isOk) { return; } CArchive ar(&file, CArchive::store); int a = 10; CString str = L"Hello...

2020-06-10 00:01:01

ProcessExplorer查找C++ exe程序运行所需要的的dll

当我们把自己打包的exe程序放到别人电脑时可能出现缺少dll的情况,此时可以用ProcessExplorer工具找出对应的dll, 把exe先运行起来,将ProcessExplorer工具栏的靶子拖动到运行的exe窗口上,此时该exe会被ProcessExplorer监控到 如下图 我是用MFC写的程序,那么就就需要mfc系列的头文件,如果没有dll栏目,需要在菜单中设置, 找到该dll, 右击属性就会看到dll路径了。...

2020-06-14 15:54:09

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取