- 博客(51)
- 资源 (173)
- 收藏
- 关注
原创 学习C++最好的四个网站
学习C++最好的四个网站:cppreference、LearnCpp、cplusplus、TutorialsPoint
2017-11-28 14:03:27 9212 2
原创 Qt之使用openUrl打开文件时应该注意的问题
先上代码QString local=QString("file:///%1").arg(filePath);QUrl url(local);QDesktopServices::openUrl(url)上面这段代码在一般情况下是不会出问题的,可以将路径为filePath的文件打开,但是当路径中包含“%20”时(比如说这个文件是从服务器下载的,文件名中的空格被自动转换成了“%20”),这样是无
2017-11-28 10:55:31 9044 1
转载 Windows下使用taskkill命令批量结束进程
前言在windows 下,最常使用的结束进程的方法就是打开任务管理器,找到相应的进程, 选择后点击 “结束进程” 按钮。但是,如果要结束的进程量很大的话, 比如结束 100 个打开的文本编辑框的话, 这种方法就不适用了。解决方法就是使用taskkill 命令。taskkill 命令在命令行下输入 taskkill /? 就能看到这个命令的
2017-11-27 11:42:08 4410
原创 Qt之自定义QCheckBox
要实现“漂亮”的QCheckBox有两种方法,一种是贴图,一种是自绘,效果如下所示:这里两种方法都用到了Qt样式表(style sheet),方法一直接加载QSS,通过check状态切换图片,QSS如下方法一有三个明显的缺点1.需要美工,效果图中的图是我自己p的,p的不太好,边缘锯齿明显2.checkbox缩放时图片会变形3.指示器(indicator)滑动时没有动画效果,好吧这里根本没滑动相比方法一,方法二就没上面的三个缺点,其实现原理如下:我们实现一个自己类QHCheckBox,该类继承
2017-11-27 11:33:16 8233
原创 C++之获取GPU(显卡)信息
#include #include #include #include using namespace std;std::string WStringToString(const std::wstring &wstr){ std::string str(wstr.length(), ' '); std::copy(wstr.begin(), wstr.
2017-11-24 11:50:17 24190 9
原创 Qt之HTTP下载(同步与异步、多线程与断点续传、超时与重定向)
今天使用Qt的QNetwork模块下载https开头的链接时报错:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed,但是下载http开头的资源却没问题原因:因为HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。.........
2017-11-23 11:43:02 4333
原创 C++之最简单的TCP客户端和服务器(Windows版)
这里做个备份,毕竟在对第三方网络库或者自己开发网络库做压测时,需要有比较基准,这个基准必须是最简陋的乞丐版,即只调用系统API实现的最简单的TCP客户端和服务器。例子给出的是最简单的Ping-Pong测试,很形象了,像打乒乓球一样将数据丢来丢去。
2017-11-23 10:03:52 3630 1
原创 Qt之基于Breakpad实现跨平台崩溃捕获
Qt之基于Breakpad实现跨平台崩溃捕获。Breakpad是Google公司开源的跨平台C++崩溃检测库。Breakpad可以捕获发布给用户的应用程序的崩溃,并记录软件崩溃的调试信息到“minidump”文件中。软件崩溃时还可以把生成的“minidump”上传到自己的服务器上,这样就能方便的分析崩溃原因。
2017-11-22 17:58:49 4123 3
原创 Qt之Windows下禁用和启用中文输入法
在密码框输入密码的时候,一般要输入字母、数字或者其他特殊字符,如果当前输入法是中文输入法,比如说搜狗拼音中文,需要手动切换成英文输入法,非常麻烦。如果能在密码框获取到焦点的时候,将输入法切换到美式英语;在密码框失去焦点的时候,将输入法还原到之前的状态,就能解决该问题了。 只使用Qt是无法实现禁用和启用中文输入法的,需要调用Windows API1.先包含相关的头文件和库
2017-11-22 16:53:53 9084 5
原创 Effective C++笔记之十七:善用PIMPL技巧
Effective C++笔记之十七:善用PIMPL技巧PIMPL(Pointer to Implementation)这个手法可以解決/改善C++编码时常碰到的2大问题。1.class增加private/protected成员时,使用此class的相关 .cpp(s) 需要重新编译。2.定义冲突与跨平台编译
2017-11-21 11:46:17 10760 4
原创 Qt之如何获取主窗口的指针
QMainWindow* getMainWindow(){ foreach (QWidget *w, qApp->topLevelWidgets()) if (QMainWindow* mainWin = qobject_cast(w)) return mainWin; return nullptr;}
2017-11-21 10:30:42 21882 3
转载 在纷繁多变的世界里茁壮成长:C++ 2006–2020(5)C++14:完成 C++11
依据大版本和小版本交替发布的计划,C++14 [du Toit 2014] 的目标是“完成 C++11”;也就是说,接受 2009 年特性冻结后的好的想法,纠正最初大规模使用 C++11 标准时发现的问题。对这个有限目标而言,C++14 是成功的。重要的是,它表明 WG21 可以按时交付标准。反过来,这也使得实现者能够按时交付。在 2014 年年底之前,三个主要的 C++ 实现者(Clang、GCC 和微软)提供了大多数人认为完整的特性。
2017-11-21 10:03:10 17562 1
原创 Qt之配置QSslConfiguration让客户端程序跳过本地SSL验证
Qt之配置QSslConfiguration让客户端程序跳过本地SSL验证
2017-11-20 16:29:21 7076 1
原创 OpenWrt:通过GPIO管脚控制LED灯
在Linux中,GPIO表达为设备文件, 对GPIO的操作采用文件读写方式即可完成, 这些设备文件在目录/sys/class/gpio/ 中,如下所示:目录中文件或子目录的作用如下所示:export 导出控制的GPIO引脚编号unexport 取消控制的GPIO引脚编号gpio* 对应的gpio引脚信息我要控制的LED灯对应的gpio*文件夹为gpio11,但是/sys/class/gpio/中并没有这个文件夹,可以按下列步骤操作1.导出gpio11echo 11> expo
2017-11-20 14:45:00 2567
原创 C++之仿函数与operator()
我们的初衷是想设计一个binary function,使其能做binary function的工作,这看起来并不容易,但是仿函数能解决这个问题。这个函数看起来比前面一个版本更具有一般性,但是他不能满足count_if函数的参数要求:count_if要求的是unary function(仅带有一个参数)作为它的最后一个参数。每当新建一个全局变量,即使是为了coding的便利,我们也要知道我们应该尽可能的少使用全局变量,因为它的cost很高;这段代码看似很不错,实则不符合规范,更重要的是,它不优雅。
2017-11-17 16:51:12 2766 1
转载 一个完全的新人如何搭建自己的个人网站
首先,申明下本文所指的新人是指会上网站看网页,会自己聊QQ,会在新浪、网易等平台上写博客的人。当然你要说这个只要会上网的人都会了,是的,我所指的新人就是会上网的人。所以本文的技术含量不会很高,高手可以直接忽略了。下面我们开始进入正题。搭建一个个人网站需要三个必备的因素,即:域名、服务器、程序。如果把一个网站比作一家商店,那么域名就好比店名或者商标,服务器就比如店面,程序就是整个商店的运作系
2017-11-17 15:27:11 152573 19
原创 C++面试题之为什么不能多线程直接操作GUI状态
因为多线程操作一个UI,很容易导致反向加锁和死锁问题。本文来自Sun 副总裁Graham Hamilton,
2017-11-17 09:39:43 2045
原创 C++ 实现线程安全的map
STL容器不是线程安全的。比如对于vector,即使写方(生产者)是单线程写入,但是并发读的时候,由于潜在的内存重新申请和对象复制问题,会导致读方(消费者)的迭代器失效。实际表现也就是招致了core dump。另外一种情况,如果是多个写方,并发的push_back(),也会导致core dump。但可以通过固定vector的大小(调用resize())避免动态扩容(无push_back)来做到lock-free。
2017-11-17 09:20:10 6889 3
转载 C++基础代码—20余种数据结构和算法的实现
过年了,闲来无事,翻阅起以前写的代码,无意间找到了大学时写的一套C++工具集,主要是关于数据结构和算法、以及语言层面的工具类。过去好几年了,现在几乎已经回忆不起当年写代码时的情况,不过,通过文件头部注释里的日期,还是依稀想起了那些日子发生的一些事情,不禁感慨了一番。感概之余,随便翻阅了一下,发现当年的编程手法和现在相比,略显稚嫩,风格也相差的比较大了,明显受到当时读的一些经典C++书籍的影响。不过
2017-11-17 09:10:54 13909
原创 C++实现的高精度计时器(精确到纳秒)
在调试程序的时候,有时候需要知道程序语句执行时间的耗时。特别是比较算法性能的时候,对耗时的精度要求较高。chrono是C++ 11中的时间库,它提供了跨平台的高精度时钟解决方案,精确到纳秒级。
2017-11-16 16:15:10 5887
原创 QPushButton的样式表代码总结
方法1:对QPushButton的美化,很多人都用setFlat(),将QPushButton扁平后,再美化。但是它有一个缺点,就是无法再通过SetStyleSheet()对它上色。除非用QPalette:Button系统的颜色。但是实际上不需要上述方法,照样使用Qt原风格的Button,只需要在qss中修改它的风格就好了,而且不影响背景着色。方法2:或者网上说的QLinkButton,但是它无法将字体充满在button内部。
2017-11-16 12:37:58 22735 1
原创 QScrollBar样式表总结
具体的style sheet代码,这里面的CSS代码还可以写得更优雅一些,反正是起作用了,没太大兴趣再去继续弄。如图所示,QTableView使用的QHeaderView与scrollbar的style。当然,不用背景图也是可以的,下面是使用QSS实现扁平滚动条,只有几个简单的颜色。为了更符合扁平风格,去掉了滚动条两端的箭头。☆鼠标放到handle上的背景色。☆handle的背景色。
2017-11-16 12:32:10 6505 1
原创 Qt之QSplitter实现窗口分割
QSplitter是一个可以包含其他控件的容器,这些控件被一个分隔条隔开,拖动这个分隔条,可以改变splitter中子控件的大小。QSplitter控件经常做为布局管理器使用,给用户提供更多的界面控制。下面在分割条中间加上自定义按钮,控制分隔条右侧窗口的快速伸缩。
2017-11-16 12:24:24 7881 1
原创 Qt优秀开源项目之五:TTKMusicplayer
这是一款高仿酷狗音乐播放器(支持网易云音乐、QQ音乐、酷我音乐、酷狗音乐),基于qmmp和Qt库开发github地址:https://github.com/Greedysky/TTKMusicplayer支持绝大多数的音频播放格式支持的播放列表格式(tkpl, m3u, m3u8, pls, wpl, xspf, asx, fpl, dbpl, csv, txt)华丽流星炫酷的界面设计,跨平台有良好的性能表现。搜索和高速下载。歌曲搜索精度优化,智能节省带宽,可以禁用网络功能,支持多个国内音乐平台曲库。
2017-11-16 10:48:44 7222 1
转载 OpenGL ES渲染管线与着色器
前言在前文《[OpenGL ES 01]OpenGL ES之初体验》中我们学习了如何在 iOS 平台上设置OpenGL ES 环境,主要是设置 CAEAGLLayer 属性,创建 EAGLContext,创建和使用 renderbuffer 和 framebuffer,并知道如何清屏。但实际上并没有真正描绘点什么。在本文中,我们将学习OpenGL ES 渲染管线,顶点着色器和片元着色器
2017-11-15 17:05:25 1118
转载 OpenWrt:UCI系统
如上例种中,列表的名称是'collection',它包含了两个值,即'first item'和'second item'。每个文件大致与它所配置的那部分系统相关。布尔选项中可以用'0' , 'no', 'off', 或者'false'来表示false值,或者也可以用'1', 'yes','on'或者'true'来表示真值。在UCI的配置文件通常包含一个或多个配置语句,包含一个或多个用来定义实际值的选项语句的所谓的节。'option'和'list'语句的缩进可以增加配置文件的可读性,但是在语法不是必须的。
2017-11-15 16:05:22 2944
原创 C++11新特性之十二:std::all_of, std::any_of, std::none_of
检测在范围[first,last)内是否所有元素都不满足条件,如果所有元素都不满足条件,返回true,否则返回false,当范围[first,last)为空时(无元素),返回true。检测在范围[first,last)内是否所有元素都满足条件,如果所有元素都满足条件,返回true,否则返回false,当范围[first,last)为空时(无元素),返回true。.........
2017-11-15 15:30:14 5425
转载 Blender及其游戏引擎
简单点说,Blender是一款3D制作软件,同3DMax,Maya类似,可被用于3D动画和3D游戏的制作,与3DMax,Maya高昂的授权价格不同,Blender开源免费,GPL授权协议,不过这点优势在中国似乎不被关注,盗版猖獗,很多人对自己日常使用软件的授权价格一无所知,甚至有些人对自己使用的软件是否收费都不清楚,不得不说是一种悲哀,国人宁愿花奢侈的价格去买硬件,但却舍不得在软件上花一块钱。
2017-11-15 15:25:18 6404
转载 在OpenGL中向shader传递信息
引言一个OpenGL程序可以用多种方式和shader通信。注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存。OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了。例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样。不过,使用Ope
2017-11-15 15:17:53 939
转载 OpenGL中Camera类的设计以及使用
简介: 首先,camera类是什么?它相当于摄像机镜头,通过设定合适的位置和角度可以实现对3D绘制图形的观察,而camera类的优势就在于可以围绕绘制的物体进行漫游,唯一需要完成的工作就是如何使用该类的操作完成有效的漫游。 很多带3D图形显示的软件其实都有自己的camera类,很多时候我们可以使用鼠标即可完成3D图形的各个方向360度的观察,并且最好还可以拉
2017-11-15 15:09:49 2544
转载 OpenGL简单实现太阳系模拟
#include "stdafx.h"#include #include #include "math.h"#include // GLaux库的头文件#pragma comment( lib, "glaux.lib") // GLaux连接库//行星序是水星、金星、地球、火星、木星、土星、天王星、和海王星//adam,hesper,earth,mars,jupiter,sat
2017-11-15 14:25:05 8104 2
转载 将Qt、OpenGL、GLSL以及Qt的Graphics-View框架结合
九月份都快过去了,学生们也都开学了,我想校园也会热闹许多吧,在CSDN上也相应地热闹了一些。中秋节也过去了,自己身边还有很多没有吃完的月饼,于是将月饼作为早餐每天早上吃一个,希望这样不会浪费。 这个月的事情比较多,又比较忙,所以这么晚才能抽出时间写出一篇。这回介绍一下Qt对OpenGL的支持情况,话说半月前,我参加了上海地区的Qt研讨会,Digia那边的工程师介绍了一下Qt的发
2017-11-14 14:37:43 1332
转载 Qt之实现3D纹理渲染自由旋转空间立方体
昨天七夕,关于七夕美好的爱情传说源自于浩瀚银河星空,又碰巧最近在学习QtOpenGL实现三维纹理防体重建,突发奇想用Qt实现一个立方体星空模型,并且能随着鼠标操作实现空间自由旋转 核心思想是用到Qt OpenGL模块,将二维图片贴到立方体的六个面,鼠标可以自由旋转立方体,实现三维星空的动态变换,真正做出来后,感觉效果还挺好的,三维立体星空看起来还是很绚丽的,呵呵
2017-11-14 14:24:03 5828
原创 Qt之调用zlib压缩与解压缩功能
当前最新的是1.2.3版本,zlib123.zip和zlib123dll.zip 都是要下载的,因为zlib123dll.zip 没头文件,需要用到zlib123.zip中的zlib.h和zconf.h。zlib是一种开源免费且通用的压缩库,由于zlib压缩效果比LZW好,而且解压缩速度快,更重要的是商业软件中使用zlib不需要缴纳版权费,所以很多游戏都使用zlib压缩资源文件。还有一个非常重要的函数compressBound可以预估压缩文件的大小,该预估值通常大于最终压缩文件的实际大小。
2017-11-14 11:44:38 9132 4
原创 QPushButton异形按钮带点击效果
QPushButton异形按钮带点击效果。只有点击图标才会有点击效果,点击按钮上的非图标区域是没有点击效果的。
2017-11-14 11:25:12 4010 1
原创 Qt之定制个性化系统托盘菜单(仿360安全卫士)
上图是我仿的360安全卫士的托盘菜单。顶部和底部的两个菜单项都将背景色设置成了360安全卫士的主题色,中间的大菜单项由6个按钮组成,像这些非规则的菜单项都需定制。虽然360安全卫士总是无缘无故拦截我,但是360产品外观设计还是非常赞的,要不也不会被众多程序猿模仿。
2017-11-14 11:13:59 4778 1
20种数据结构和算法的C++实现
2017-11-17
Qt下用QSplitter实现滑动窗口
2017-11-16
QML实现图像处理,包括浮雕、锐化等效果
2017-11-14
WebRTC学习之四:最简单的语音聊天
2017-01-10
WebRTC学习之三:录音和播放
2016-12-26
Qt国际化(I18N)
2023-12-31
QHVlcPlayer.rar
2021-02-27
Qt+libVLC+QWidget渲染
2021-02-27
Qt调用libVLC实现播放器
2021-02-26
TestUI.rar
2021-02-09
QHOpenGLPlayer.rar
2021-01-10
基于Qt和SDL2播放PCM
2021-01-05
Qt5版NeHe OpenGL教程6-10
2018-05-17
Qt5版Nehe OpenGL教程1-5
2018-05-14
Qt调用OpenGL API实现彩色旋转立方体
2018-05-09
MyTcpClient
2018-03-16
Boost.Asio C++ Network Programming随书源码
2018-01-29
Boost.Asio C++ Network Programming(高清,带书签,可复制)
2018-01-29
Effective Modern C++ 英文原版(带书签)
2018-01-27
++i和i++哪个更高效
2023-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人