草上爬
专注技术,热爱分享
展开
-
Qt之使用QPrinter导出PDF
Qt之使用QPrinter导出PDF,如果要新建一页,可以调用bool QPrinter::newPage(),使用QPrinter导出的PDF有个很明显的缺点:没有书签,如果PDF页数较多,这种方式其实是不太行的。原创 2018-03-13 17:47:16 · 29753 阅读 · 1 评论 -
QListView启用水平流式布局
QListView启用水平流式布局原创 2018-04-28 13:55:56 · 13493 阅读 · 0 评论 -
QTreeView第一列自适应
通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第一列的宽度能自动缩放,第二列和第三列的宽度保存不变,而且要支持鼠标拖动调整列宽。原创 2024-06-30 07:25:01 · 195 阅读 · 2 评论 -
QListView、QTableView或QTreeView截取滚动区域(截长图)
QListView、QTableView或QTreeView截取滚动区域(截长图)本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。原创 2024-06-23 17:59:03 · 221 阅读 · 1 评论 -
QTreeView双击任意列展开
重点是如何通过其他列的QModelIndex(假设为index),获取第一列的QModelIndex(假设为firstColumnIndex)。这里要注意index函数的第三个参数,第三个参数为父index,因为通过在tree中仅通过row和column无法确定目标index。下面是一个只有一列的tree,注释中为每行的row和column此时,model->index(0, 0);只会定位到node0,而不是node1-0、 node2-0或node2-1-0。原创 2024-06-23 14:52:46 · 340 阅读 · 0 评论 -
Qt开发经验总结
增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理。把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能。把一些Qt5中兼容Qt4的方法废弃了,必须用Qt5中对应的新的函数。跟随时代脚步,增加了不少新特性以满足日益增长的客户需求。对某些模块和类型及处理进行了革命性的重写,运行效率提高不少。有参数类型的变化,比如 long * 到 qintptr * 等,更加适应后续的拓展以及同时对32 64位不同系统的兼容。原创 2016-12-02 11:46:22 · 7731 阅读 · 2 评论 -
Qt之使用Qt内置图标
Qt内置图标封装在QStyle中,共七十多个图标,可以直接拿来用,能应付不少简单程序需求,不用自己去找图标并添加到资源文件了。下面是内置图标的枚举定义:QStyle提供了QIcon standardIcon()函数用于将内置图标转换为QIcon,同时提供了QPixmap standardPixmap()函数用于将内置图标转换为QPixmap。这两个函数的第一个参数都是上面贴出的枚举值。原创 2024-02-04 20:10:19 · 5720 阅读 · 97 评论 -
分享一个QML实现的电池充电效果(超级炸裂)
分享一个QML实现的电池充电效果(超级炸裂)原创 2018-04-04 14:55:50 · 5594 阅读 · 1 评论 -
Qt之有趣的数字钟
Qt之有趣的数字钟:基于网络代码修改,支持时、分、秒;支持滑动、翻页和旋转。原创 2024-01-09 08:30:23 · 2574 阅读 · 55 评论 -
用Qt开发的十大理由
用Qt开发的十大理由原创 2018-01-16 16:57:00 · 17367 阅读 · 0 评论 -
Qt实现的颜色生成器
有些时候我们需要为一些对象附上随机的颜色,比如我们有这么一个需求,用QCustomPlot绘制曲线,刚开始曲线的颜色默认都是黑色的很不好看,后来为了显示的美观我们想给添加的曲线随机的附上颜色,但是有一个要求,曲线的颜色不能太淡,比如不能是白色。因为图像的背景颜色是白色的,如果曲线也是白色那曲线就会看不到了。这样可以实现我们对随机颜色的要求,但是不满足我们不能为白色的要求,为了避免白色,我们在对这个颜色进行检查,如果r、g、b分量的值都超过230,表示颜色太淡重新随机,但是这样的方法总让人感觉不那么舒服。原创 2018-03-13 17:43:51 · 2215 阅读 · 2 评论 -
Qt之设置QLabel的背景色和前景色
Qt之设置QLabel的背景色和前景色:方法有两种,一种是使用调色板,一种是使用样式表。原创 2024-01-03 18:21:09 · 6133 阅读 · 40 评论 -
Qt之QPainter绘制浪漫星空(快来许愿吧)
前几天发现几篇关于Python的博文,里面不是放烟花(Python烟花秀),就是献爱心(Python跳动的爱心)。以前学Python的时候的时候关于它的简介还是这样的:Python是一种高级编程语言,可以应用于爬虫、大数据、人工智能等方面。没想到Python在GUI方面也这么强大,好在Qt也不怂,,效果不逞多让。还有一篇,感觉不错,用QPainter复刻了一下,代码量和Python版本差不多。原创 2024-01-03 00:04:24 · 2722 阅读 · 15 评论 -
Qt之自定义分页(翻页)控件
Qt之自定义分页(翻页)控件:当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。原创 2023-12-27 22:17:04 · 2510 阅读 · 2 评论 -
QML粒子系统酷炫效果合集(不定时更新)
QML粒子系统酷炫效果合集:1.烟花效果;2.文字灰飞烟灭效果原创 2018-04-02 17:57:11 · 7260 阅读 · 1 评论 -
QML实现的毛玻璃效果
QML实现的毛玻璃效果原创 2018-03-08 15:10:10 · 3042 阅读 · 1 评论 -
Qt 性能优化之一:选择合适的视频渲染方案
Qt 性能优化之一:选择合适的视频渲染方案原创 2016-11-04 19:08:48 · 3031 阅读 · 1 评论 -
Qt之判断一个点是否在多边形内部(射线法)
以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。其次,对多边形的顶点和射线相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略该点;最后,对于Q在多边形边上的情形,直接可以判断Q属于多边形。在图A中,射线与多边形的顶点相交,这时交点只能计算一个;在图B中,射线与多边形顶点的交点不应被计算;在图C中,射线与多边形的一条边重合,这条边应该被忽略不计。为了统一起见,射线可设定为水平向右,设点P的纵坐标与Q相同,P的横坐标为一大的整数,则可用QP代替射线。原创 2023-12-20 02:06:10 · 2944 阅读 · 0 评论 -
Qt之使用QListView加载相册(富文本ToolTip)
Qt之使用QListView加载相册(富文本ToolTip):如果item的显示效果达不到要求,那么就自定义delegate。原创 2023-12-18 11:37:26 · 2812 阅读 · 0 评论 -
Qt之自绘遥控器圆形主控按钮
Qt之自绘遥控器圆形主控按钮,云台的控制器也是这个样子的,其实贴图也能做,但是没自绘灵活。原创 2018-03-14 14:14:04 · 8683 阅读 · 2 评论 -
Qt调用jrtplib实现单播、多播和广播
jrtplib简介可参考:http://blog.csdn.net/caoshangpa/article/details/51151942RTP协议分析可参考:http://blog.csdn.net/caoshangpa/article/details/51149007windows下编译jrtplib可参考:http://blog.csdn.net/caoshangpa/article原创 2016-09-18 08:29:26 · 10070 阅读 · 13 评论 -
Qt基于librtmp推送H.264
rtmp打包H.264的原理可以参考:RTMP协议分析及H.264打包原理相关文章:【1】Win7(Windows 7)下用VS2012(Visual Studio 2012)编译librtmp【2】libRTMP使用说明【3】 Adobe Media Server 5(AMS)的安装及使用【4】Adobe Media Server 5(AMS)的简单配置【5】H.264(原创 2016-11-11 09:41:21 · 8585 阅读 · 4 评论 -
Qt调用OpenGL API实现彩色旋转立方体
Qt调用OpenGL API实现彩色旋转立方体原创 2018-05-09 20:19:50 · 3142 阅读 · 2 评论 -
Qt5版NeHe OpenGL教程之一:你的第一个多边形
Qt5下OpenGL程序的新写法可参考:https://blog.csdn.net/caoshangpa/article/details/51103402我们添加了一个三角形和一个四边形。也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形。lesson1.h#ifndef LESSON1_H#define LESSON1_H#incl...原创 2018-05-10 17:30:41 · 7075 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之二:添加颜色
与教程一相比,只需要在render函数中添加设置颜色的语句:void glColor3f(GLfloat red, GLfloat green, GLfloat blue);void Lesson2::render(){ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glViewport(0,0,(GLint)width()...原创 2018-05-11 18:31:19 · 2987 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之三:旋转
这一课会把第二课中的三角形绕Y轴逆时针旋转45°,正方形绕X轴顺时针旋转45°头文件中添加两个变量表示三角形和正方形旋转的角度。private: QOpenGLContext *m_context; GLfloat rtri; // 用于三角形的角度 GLfloat rquad; // 用于正方形的角度在构造函数中赋值Lesson3::Lesson3(QWind...原创 2018-05-11 20:17:11 · 2940 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之四:3D空间
在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D世界中的2D对象。我们给三角形增加一个左侧面,一个右侧面,一个后侧面来生成一个金字塔(四棱锥)。给正方形增加左、右、上、下及背面生成一个立方体。 我们混合金字塔上的颜色,创建一个平滑着色的对象。给立方体的每一面则来个不同的颜色。只需要在上节课的基础上改动render函数void Lesson4::render()...原创 2018-05-14 15:51:01 · 2790 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之五:纹理映射
在这一课里,我将教会你如何把纹理映射到立方体的六个面。学习texture map纹理映射(贴图)有很多好处。比方说您想让一颗导弹飞过屏幕。根据前几课的知识,我们最可行的办法可能是很多个多边形来构建导弹的轮廓并加上有趣的颜色。使用纹理映射,您可以使用真实的导弹图像并让它飞过屏幕。您觉得哪个更好看?照片还是一大堆三角形和四边形?使用纹理映射的好处还不止是更好看,而且您的程序运行会更快。导弹贴图可能只是...原创 2018-05-14 17:26:09 · 3237 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之六:光照和键盘控制
在这一课里,我们将添加光照和键盘控制,它让程序看起来更美观。现在设置4个变量来控制绕x轴和y轴旋转角度的步长,以及绕x轴和y轴的旋转速度。另外还创建了一个z变量来控制进入屏幕深处的距离。并添加一个布尔型变量light来控制光源的开和关。bool light; // 点击“L”键开关光源GLfloat xrot; // X 旋转GLfloat yrot; // Y 旋...原创 2018-05-15 15:45:14 · 2991 阅读 · 1 评论 -
Qt5版NeHe OpenGL教程之七:混色
简单的透明 OpenGL中的绝大多数特效都与某些类型的(色彩)混合有关。混色的定义为,将某个象素的颜色和已绘制在屏幕上与其对应的象素颜色相互结合。至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定alpha分量的值。...原创 2018-05-15 19:37:47 · 3221 阅读 · 2 评论 -
Qt5版NeHe OpenGL教程之八:3D空间中移动图像
欢迎进入第八课。到现在为止,您应该很好的理解OpenGL了。您已经学会了设置一个OpenGL窗口的每个细节。学会在旋转的物体上贴图并打上光线以及混色(透明)处理。 这一课应该算是第一课中级教程。您将学到如下的知识:在3D场景中移动位图,并去除位图上的黑色象素(使用混色)。接着为黑白纹理上色,最后您将学会创建丰富的色彩,并把上过不同色彩的纹理相互混合,得到简单的动画效果。l...原创 2018-05-16 19:05:22 · 2897 阅读 · 0 评论 -
Qt5版NeHe OpenGL教程之九:加载3D世界,并在其中漫游
这一课就要解释一个基本的3D世界"结构",以及如何在这个世界里游走。lesson9.h#ifndef LESSON9_H#define LESSON9_H#include <QWindow>#include <QOpenGLFunctions_1_1>#include <QKeyEvent>#include <QTextStream>...原创 2018-05-17 11:01:20 · 4007 阅读 · 1 评论 -
Qt5版NeHe OpenGL教程之十:飘动的旗帜
这一课将把如下图片做成一个飘动的旗帜,其实主要还是用到了纹理映射。lesson10.h#ifndef LESSON10_H#define LESSON10_H#include <QWindow>#include <QOpenGLFunctions_1_1>#include <QKeyEvent>class QPainter;class QOpen...原创 2018-05-17 14:19:17 · 3177 阅读 · 0 评论 -
Qt MQTT编译
下载的时候,会发现有很多的分支,分支命名规则与对应的Qt版本号相同,自己的Qt是哪个版本,切到对应的分支就行,我的是Qt5.12.2 VS2017,所以我切到5.12.2分支编译的时候没任何错误。qmqttconnection.cpp:1452: error: C2039: “resize”: 不是“QList”的成员。PS:有博主说要安装perl,因为我开发机之前已经安装了perl 5.26,所以没提示perl的问题。原创 2019-01-24 16:58:21 · 4937 阅读 · 1 评论 -
QMQTT:一个开源的MQTT客户端
github地址:GitHub - emqx/qmqtt: MQTT client for Qtmqtt client for QtPlease compile the library with Qt >= 5.3 version. On Windows you need to specify , since gtest is not supported.SSL is enabled by default, if the version of OpenSSL < 1.0.2, SSL may not be原创 2016-09-16 13:38:39 · 5826 阅读 · 0 评论 -
Windows环境下mosquitto服务器搭建
-will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。--will-qos Will的QoS值。--will-topic 用户发送Will消息的topic。--will-topic 用户发送Will消息的topic。原创 2019-01-24 17:07:09 · 4502 阅读 · 0 评论 -
Qt MQTT官方demo演示
为了方便演示,官网还提供了两个服务器地址:test.mosquitto.org和broker.hivemq.com,默认端口是1883。上图log message中是依次点击Connect、Subscribe、Publish和Ping按钮的结果。Qt MQTT官方demo演示。原创 2019-01-24 17:05:21 · 4361 阅读 · 0 评论 -
MQTT协议
MQTT 服务器搭建我们已经完成了,现在回过头来看协议。参看:MQTT 官网参看:MQTT_V3.1_Protocol_Specific参看:MQTT协议中文版参看:MQTT协议中文版上面这几篇文章,已经说明了一切。下面着重讲一下 MQTT 的消息格式和主要特征。一、什么是MQTT首先你要知道什么是MQTT。额,这个很重要。官网是已经给我们答案了,参看:Freque...原创 2019-01-24 15:52:19 · 2965 阅读 · 0 评论 -
MQTT 服务器(broker)
EMQ X是一个基于Erlang语言的开源mqtt服务器,目前来看是开源的最好的mqtt服务器,也是国内开源的mqtt服务器,优点是功能全面,文档齐全,社区活跃,有很好的支持,缺点是因为erlang语言,对于其他语言的开发者自己扩展有一定难度。EMQ X 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。原创 2019-01-24 17:06:04 · 10738 阅读 · 0 评论 -
Qt中如何将char*转LPCWSTR
Qt中如何将char*转LPCWSTR:LPCWSTR pStr=LPCWSTR(QString("Gavin").utf16());原创 2017-03-13 16:48:30 · 5143 阅读 · 1 评论