QT 学习笔记
文章平均质量分 58
QT 学习
去往火星
这个作者很懒,什么都没留下…
展开
-
绘制等高线图的算法
实际地图上实用的单位是米,但我们显示时使用的单位是像素,这里面有一个转换的关系。而且,显示的图形有可能需要缩放。所以我们收集的数据,x和y统一使用相对值。我们把总长和总宽都定为1,实际的坐标相对于单位1来定。例如地图长8km,然后我们的坐标点x为1km,那么x就是1/8=0.125。实际上,等高线图是分成一个一个网格的,我所使用的网格大小是10*10。每个网格里的线和颜色组成了整张的等高线图。原创 2024-04-25 16:19:30 · 671 阅读 · 0 评论 -
等值线算法
我们令黑点上的值大于阈值(等值线值)时为1,小于阈值时为0,我们可以保存在一个4位2进制内。比如我们的1,2,4号顶点标记为0。我们还可以同样的建立一个线表,表示该网格连接的线为哪两条边(由于有可能出现2条线的情况,所以我们第二维用大小为5的数组,便于之后的遍历)。通过网格索引获取边信息,然后转化为所有边的编号,然后获取边的两个顶点,进行插值计算点的位置,我们就保存该点的位置信息和边编号。通过网格索引,获取连线的两个顶点信息,通过在边索引表阶段保存的点信息和编号,保存连线的最终点信息。原创 2024-04-24 16:34:26 · 566 阅读 · 0 评论 -
通过标准网格点计算等值线
本资源提供了通过输入标准网格点数据计算等值线的接口,接口通过Qt实现,调整部分数据类型后也可转为C++代码。接口使用也比较简单,将本资源的源码添加到工程中,然后调用。函数即可得到等值线。该函数输入有2个,第一个是所有标准网格点的值,第二个参数是等值线的间隔。ContourGenerator.cpp接口实现代码文件。ContourGenerator.h接口定义头文件。struct.h:结构体定义文件。原创 2024-04-24 16:08:47 · 121 阅读 · 0 评论 -
QT 等值线算法
对于二维的规则网格,本文以104*104格点大小数据做为说明 ,Qcloud.txt为原始数据,re01.txt为01代码。原创 2024-04-24 11:17:22 · 232 阅读 · 0 评论 -
C/C++代码检查工具——Qt creator 中安装cppcheck插件
pc-lint是资格最老,最强力的工具,但是是收费软件,并且配置起来有一点点麻烦。是免费的开源软件。使用起来也很方便。我在qt creator集成cppcheck插件 绕了点弯,所以记录一下;原创 2024-04-22 17:13:33 · 382 阅读 · 0 评论 -
QT QScrollBar 滚动条美化
滚动条区域是指滚动条中可单独通过qss修改样式的部分垂直滚动条包括:sub-line、add-line、add-page、sub-page、up-arrow、down-arrow、handle水平滚动条:sub-line、add-line、add-page、sub-page、left-arrow、right-arrow、handle。原创 2024-04-13 13:44:38 · 181 阅读 · 0 评论 -
QScrollBar滑块颜色通过setStyleSheet设置时未生效现象
方案:通过setStyleSheet设置QScrollBar::handle:vertical的。需求:需要单独修改QScrollBar的。通过以下方式设置滑块颜色,并未生效。现象:颜色修改未生效。原创 2024-04-13 13:41:00 · 124 阅读 · 0 评论 -
Qt-绘制多边形、椭圆、多条直线
所有的绘图操作是在绘图事件中进行。原创 2024-04-12 14:31:06 · 366 阅读 · 0 评论 -
QT实现窗口大小随分辨率变化而变化
分辨率转换原理,如果窗口需要放在大分辨率的显示器上,需要将原窗口view大小调整到大分辨率的窗口对应的大小,然后将view进行scate放大;如果窗口需要放在小分辨率的显示器上,也需要将原窗口view大小调整到小分辨率的窗口对应的大小,需要将view进行scate缩小。实现原理,就是借用QGraphicsView的缩放功能来实现的,并且做好QGraphicsView的防锯齿设置,就能完美的适应各种不同分辨率的显示器上了。先上三张效果图,分别是原窗口、等比放大窗口和等比缩小窗口。原创 2024-04-10 11:29:59 · 252 阅读 · 0 评论 -
QGraphicsItem实现不随场景缩放而缩放,支持任意图片,图形,文字。
将要绘制的所有图形都先按照正常的比例进行绘制,绘制的画布设置为图片,这样相对于绘制了一张图片。然后将这张图片按照缩放比例来进行绘制。原创 2024-04-09 22:35:37 · 134 阅读 · 0 评论 -
Qt提升绘制效率,绘制加速。
通过以上两个场景,得出结论,不管是绘制多个或者逻辑复杂的静态图形还是绘制多个动态图形时,都可以通过生成图片的形式来提升绘制效率。:我们绘制多个静态图形和绘制一张图片哪个更快。很明显绘制多个图形的时候要慢很多。所以我们将多个图形变成一张图片就能实现加速。:绘制多个动态图形和将多个动态图形变成多张图片,效率还会有提升吗?在我们绘制一些复杂逻辑且数据量巨大的图形时,经常会出现。成一张图片,我们可以控制图片生成速度来减少cpu。问题,本文就是来进行讲解如何提升绘制效率的。控制图片生成速度后,cpu明显降低。原创 2024-04-09 22:34:29 · 516 阅读 · 0 评论 -
qt打包程序打包之跨平台
然后在创建一个放打包文件的文件夹,这个文件夹它会对应根路径,如你命名mkdir -p uer/local/bin的话,那么程序安装后就在/usr/local/bin/下面,这边命名如下。然后设置qmake来源,这个直接决定了程序依赖的qt库的位置,如果我们需要指定qt标准库的位置,那么qt环境就需要在那个位置。然后删除旧的执行文件,编译生成新的,再来查看执行文件的链接库位置,发现已经被更改到我们指定的位置了。本文讲的是linux系统中的程序打包,首先我们创建一个简单的程序,我的程序叫做debtest。原创 2024-04-09 22:26:56 · 754 阅读 · 0 评论 -
QT4和QT5区别
3、 将如#include 带有“QtGui/”的类替换为#include ,或者替换成#include ,视具体情况而定。1、 在pro文件中添加QT += widgets模块,如果添加这个模块后,带有”QtGui/”的类一部分类型就不需要这个前缀了,可以直接用用本身的类名。13、 QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB2312”))被取消,原创 2024-04-09 19:26:55 · 445 阅读 · 0 评论 -
QGraphicsView实现拖拽缩放
继承QGraphicsItem实现的自定义Item,由于QGraphicsItem它不继承QObject,所有它不具备信号槽机制,如果想要实现信号槽,可以多重继承,既继承QObject,又继承QGraphicsItem,就像QGraphicsObject它一样。其中QGraphicsItem需要继承重写,重写的派生类中必须需要实现两个函数,paint(item的绘制函数)和boundingRect(item的大小位置函数),因为这两个是纯虚函数。示例代码如下,该示例支持按钮缩放,滚轮缩放和鼠标拖拽。原创 2024-04-09 19:19:39 · 258 阅读 · 0 评论 -
QGraphicsView、QGraphicsScene和QGraphicsItem坐标关系和应用
这里先创建一个矩形设置到sence中,然后再把图片设置到sence,运行后只看到图片看不到画的矩形原因在于sence中的items会根据additem的顺序展示出来,运行程序后先展示矩形,然后展示图片,但图片会覆盖矩形,所以只能看到图片,并不是矩形没有了,如果先additem图片在additem矩形,这样先展示图片,然后会在图片上画出矩形,这样可以正确显示。也是一个独立的坐标系,图像左上角默认为(0, 0)点,把图像放入scene,图像左上角坐标默认在scene的原点,设置图像左上角坐标。原创 2024-04-09 17:54:57 · 541 阅读 · 0 评论 -
为什么Qt的keypressevent等事件函数中都要最后调用父类QWidget的keyPressEvent函数?
原创 2024-04-09 15:43:44 · 85 阅读 · 0 评论 -
QML QQuickItem处理鼠标事件
使用QtQuick时,因为QML和C++都能处理鼠标事件,这就造成了麻烦。以我目前经验来看,两者不能并存。除非手动调用另一个。原创 2024-04-09 15:35:23 · 217 阅读 · 0 评论 -
Qt Creator 12.0.2 debug 无法查看变量的值 Expression too Complex
鼠标放在局部变量上提示“expression too complex”。在调试窗口也看不到局部变量的值。这应该是qt的一个bug,原创 2024-04-09 14:52:38 · 395 阅读 · 0 评论 -
QGraphics框架场景中图元的移除与析构
所以在清空的时候直接clear就完了。如果item自己写了一个链表进行备份,调用clear就可以了,不用自己去遍历那个链表然后一个一个delete,在把scene clear掉,这样就和脱裤子打屁一样,注意这个词remove只是移除,并不是delete掉,所以只是场景中(显示出来的图元)没有了,空间还是存在。直接调用clear,链表也是,就这样,就这么简单。这个m_item的在内存中还是存在的!原创 2024-04-08 19:32:55 · 423 阅读 · 0 评论 -
【QT学习】Graphics View框架(高阶篇)- 使用Graphics View框架创建开机动画
在上一篇《Graphics View框架(进阶篇)- 派生QGraphicsItem类创建自定义图元item》中,我们介绍了创建自定义图元的具体流程,通过继承基类QGraphicsItem,重写基类的两个纯虚函数来计算自定义的图元轮廓的最小矩形并进行图元绘制。本篇,我们将对图元、场景和视图进行综合运用,使用Graphics View框架创建一个开机动画。以上就是Graphics View框架(高阶篇):使用Graphics View框架创建开机动画的所有内容。原创 2024-04-08 18:46:22 · 613 阅读 · 0 评论 -
【QT学习】Graphics View框架(进阶篇)- 派生QGraphicsItem类创建自定义图元item
本篇,我们将通过对类进行派生,创建自定义图元item并显示在窗口中。我们将以创建一张从文件读取的图片item为例进行分析。#include //图元#include //场景#include //视图//创建视图//创建场景//创建自定义图元项//将场景添加到视图中//将图元添加到场景中//设置窗口大小//窗口显示。原创 2024-04-08 18:31:09 · 920 阅读 · 0 评论 -
【QT学习】Graphics View框架(基础篇)- 图元、场景、视图
在日常生活中,存在着许许多多的娱乐游戏。其中,大部分的游戏场景都是基于Graphics View框架,通过图元、场景、视图进行绘制和操控。以拳皇97这款游戏为例,视图就是游戏窗口,场景就是游戏背景,图元就是游戏角色。我们在游戏过程中,通过选择游戏角色(图元)、游戏背景(场景),将游戏角色(图元)加载到游戏背景(场景)中进行操作,最后通过游戏窗口(视图)显示出来。以上就是Graphics View框架(基础篇):图元、场景和视图的介绍,以及三者组合绘制一个矩形图元的简单应用。原创 2024-04-08 18:18:47 · 388 阅读 · 0 评论 -
Qt widget窗口去除标题框,模态,置顶,窗体透明
【代码】Qt widget窗口去除标题框,模态,置顶,窗体透明。原创 2024-04-08 17:12:31 · 96 阅读 · 0 评论 -
Qt中设置属性setAttribute(Qt::WA_DeleteOnClose)报错的情况
会在关闭时出现异常,因为当退出main方法时,会自动销毁窗口,而setAttribute方法会使得Qt再次销毁窗口,造成二次delete,产生报错。在关闭时main方法不会自动销毁,而Qt会根据setAttribute设置销毁。在Qt的Gui编程中,经常会用到QWidget和其子类作为父控件来显示,其上添加有若干控件。在构造函数中增加:setAttribute(Qt::WA_DeleteOnClose)以后,在关闭QWidget及其子类窗口时需销毁窗口。原创 2024-04-08 17:11:31 · 413 阅读 · 0 评论 -
Qt判断一个点在多边形内还是外(支持凸边形和凹变形)
这里实现的方法是转载于和来实现的,并且按照Qt的规则进行了调整。以下实现方法有四种,每种方法的具体讲解在转载的博客中有说明,这里不做重复阐述。这里只说下代码的具体实现和每种方法的时间复杂度。原创 2024-04-07 15:33:47 · 783 阅读 · 0 评论 -
QML QtLocation地图应用学习-1:在Map中展示图元 Item
Qt Location模块可用于轻量级的地图应用开发,不过官方示例及网上的例子都很少,而且仅仅是轻度使用的话没有用高德或者百度地图的Web API来得方便。在QML中使用Qt Location模块,还需要引入Qt Positioning模块,因为Qt Location依赖他。。原创 2024-04-07 12:06:48 · 684 阅读 · 0 评论 -
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
3. 图片浏览器,需要鼠标选择指定区域放大查看。4. 视频播放器,需要鼠标选择指定区域放大播放。2. 屏幕录像软件,需要鼠标选择指定区域录像。1. 截图软件,需要鼠标选择指定区域截图。原创 2024-04-07 11:39:12 · 643 阅读 · 0 评论 -
【qml】 在QML场景图中使用QPainter 的方法
当渲染目标是一个QImage时,QPainter首先渲染到图像中,然后将内容上传到纹理中。1) 要编写自己的绘制项,首先要创建QQuickPaintedItem的一个子类,然后实现其惟一的纯虚拟公共函数paint(),该函数实现实际的绘制。Mipmapping 是一种图像处理技术,它采用一个原始的、高分辨率的纹理图像或映射和过滤器,并在同一个纹理文件中将其扩展为多个分辨率更小的纹理映射。取而代之的是一个比例因子,所以绘画应该仍然发生在0,0到width(),height()。原创 2024-04-07 10:35:49 · 870 阅读 · 0 评论 -
Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备
一般我们创建Qt项目工程的时候,都是直接把所有的项目,头文件和资源文件等全放入pro中,这样一来小的项目(只有少数几个文件)那种,你可能就会觉得没有什么,但是在一些中大型的开发项目当中,可能会有十几个,甚至几十个文件的开发项目中,我们看树形结构的文件时,就会感到很杂乱,pri文件的作用就尤为重要了。简单来说,pri文件就是把pro文件中的一部分放到pri文件中进行一个管理,类似头文件,进行分块管理,分担pro文件的一部分压力,这样一来pro文件看起来就不会显得很臃肿。原创 2024-04-01 13:08:10 · 921 阅读 · 0 评论 -
Qt构建过程出现这个问题
👎 error: No rule to make target ‘…/…/NRPolarNav/ECS/sdk/dll/.so’, needed by '…/bin/.so’. Stop.缺少dl库!!!自己排查哪里缺了原创 2024-03-29 11:47:20 · 94 阅读 · 0 评论 -
Qt 完成图片的缩放拖动
1)右击界面文件—添加新文件—QT—QT设计师界面类—choose—Dialog without buttons。现再添加一界面用于单独显示图片,作为子窗口供调用(当然,也可在main.c直接调用,作为父窗口)。按钮的回调函数主要用来修改变量的值。修改完后,调用update_para、update,重绘。其中,label控件仅仅是提供绘图的区域,但最终绘图不是绘在label控件上。update_para函数用来确定drawTiledPixmap函数的各参数。构造函数中,添加输入图片的读取,以及变量初始化。原创 2024-03-29 11:12:11 · 958 阅读 · 0 评论 -
Qt 图片预览(等比例显示、放大、缩小、平移图像)显示
使用Qt的Painter绘制图像并显示,根据窗口的大小计算图片显示的尺寸,并可以对图片放大和缩小的显示,还可以对已经放大了的图片进行平移预览的操作。原创 2024-03-29 09:33:59 · 545 阅读 · 0 评论 -
QGraphicsView(平移/缩放/旋转)
包括一个事件传播架构,支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘事件、鼠标按下、移动、释放和双击事件,同时也能跟踪鼠标移动。平移速度默认为 1.0,可以使用 setTranslateSpeed() 来改变。和 Google 地图一样,在管理大量 Item 的时候,通常需要 View 具有交互(平移/缩放/旋转)功能。Graphics View提供了一个平台,用于大量自定义 2D 图元的管理与交互,原创 2024-03-26 19:02:57 · 524 阅读 · 0 评论 -
QGraphicsScene缩放后复原 QGraphicsView放大缩小移动
首先需要明白,view在整个视图框架中的角色是用于显示scene的,所以决定了如何展示scene,包括scale()函数,用于放大缩小所展示的scene;centerOn()函数,决定scene的中心在何方。所有的操作,都不会直接改变scene,改变的只是如何展现scene。view就像窗户,我们可以透过窗户看到窗外的景色。scene就像窗外的景色,需要窗户作为媒介才能够让我们看到,只不过这里的景色(scene)不一定会比窗户(view)大。原创 2024-03-25 10:42:57 · 684 阅读 · 0 评论 -
QGraphicsView实现图片放大、缩小、鼠标拖动、以鼠标点放大缩小
【代码】QGraphicsView实现图片放大、缩小、鼠标拖动、以鼠标点放大缩小。原创 2024-03-25 09:55:05 · 865 阅读 · 0 评论 -
vs2019新建Qt工程中双击 .ui 文件无法打开
至此问题成功解决,重新双击该 .ui 文件即可成功打开!原创 2024-03-22 17:38:53 · 639 阅读 · 0 评论 -
QT+GDAL实现影像的读取和显示
详细流程参考https://blog.csdn.net/deirjie/article/details/37872743。原创 2024-03-22 10:54:15 · 510 阅读 · 0 评论 -
QGraphicsView 实例3地图浏览器
View框架,实现地图的浏览、放大、缩小,以及显示各个位置的视图、场景和地图坐标。原创 2024-03-22 10:36:20 · 476 阅读 · 0 评论 -
QImage打开分辨率大的图片会报错:QImageIOHandler: Rejecting image
/我们的9344*7000的单通道图片就有62.3MB大小,而QImage是按照四通道来限制内存的,所以62.3MB*4=249.2MB。需要高于此限制的 QImage 内存分配的图像将被拒绝。注意:只有Qt6版本才有这个函数QImageReader::setAllocationLimit,Qt5是没有的。//解决办法就是扩容,使用setAllocationLimit函数,设置一个大于249.2MB的数值就可以。所以QImage想正常打开一幅10000*10000的图片,需要预先设置。原创 2024-03-21 18:29:54 · 428 阅读 · 0 评论 -
交互式QGraphicsView(平移/缩放/旋转)
Graphics View提供了一个平台,用于大量自定义 2D 图元的管理与交互,框架包括一个事件传播架构,支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘事件、鼠标按下、移动、释放和双击事件,同时也能跟踪鼠标移动。平移速度默认为 1.0,可以使用 setTranslateSpeed() 来改变。和 Google 地图一样,在管理大量 Item 的时候,通常需要 View 具有交互(平移/缩放/旋转)功能。按空格键逆时针旋转,回车键顺时针旋转。原创 2024-03-21 15:26:52 · 467 阅读 · 0 评论