- 博客(19)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QGLViewer+Qt5+VS2017开发环境搭建
QGLViewer是在原生OpenGL的基础上做了一层封装,支持显示和交互,而且与QT完美融合,可扩展性好。不足之处是这个库只封装了OpenGL1,其显示速度有待提高。本人在开发环境搭建过程中也踩了不少坑,特此记录,供日后查阅。准备工作:下载并解压libQGLViewer.zip下载地址:http://libqglviewer.com/installWindows.html解压后如图所示:一、libGLViewer-2.7.2编译(1)VS2017+Qt5平台编译VS ——> Qt VS
2021-01-30 10:04:36
2232
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 CloudCompare简单二次开发教程 上(界面设计与ui文件编译)
功能描述:新建一个停靠在点云显示窗口右上角的窗体,可以实时更改并显示所选中的点云对象的RGB颜色,也能够克隆当前点云对象。注:该功能不是以CC插件的形式开发的,而是直接修改了CC源码!开发环境:VS2017 + QT5(1)功能界面设计通过3个QSlider来滑动控制点云RGB(0~255)值,并且将RGB数值显示在QSpinBox上,反之,也能直接在QSpinBox中设置RGB值,同时QSlider响应RGB数值的改变;点击左下角“点云克隆按钮”,可以在DB Tree内新建一个完全一样的点云对象。界
2020-12-17 21:26:03
4375
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 VS2017 + Qt5 + CloudCompare2.11.0 编译
(一)资源准备(1)CloudCompare2.11.0源码源码下载地址:https://github.com/CloudCompare/CloudCompare/releases(2)PDAL或者laslib使得CC支持读写LAS格式的点云文件,如果没有PDAL也可以选择编译Laslib,后者支持Las1.3和Las1.4格式。(3)PCL-1.9.1使得CC支持读写pcd格式的点云文件,也方便在后续二次开发过程中调用PCL库。(二)CMake配置(1)设置路径CC源码资源路径:E:/c
2020-12-10 11:20:07
1862
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT5+VS2017项目编译时qmake报错,运行时无法启动提示:no QT platform plugin
此项目在一台电脑上由VS编写,在另一台电脑上利用VS编译时提示“ERROR running qmake”。(两台电脑上的QT版本号与VS完全一致)错误原因:导入的项目在别人的电脑上的QT路径别名可能与本地的不同。在项目属性中配置QT的安装路径应该为本地电脑的QT路径别名(别名是在安装QT时填写的)在Qt Option中查阅到本地电脑上QT路径别名为Qt5解决方案:Qt VS Tools —> Qt Project Setting —> Qt Installation —> 改
2020-05-19 10:28:10
4253
2
原创 设计模式之命令模式(C++)
命令模式概述:命令模式是一种行为型模式,通过将命令本身封装为一个个具体的对象,以实现命令发送者和命令执行者的解耦,发送命令的对象只需要知道如何发送而不必知道命令是如何被完成的,调用关系更加灵活。应用场景:(1)当功能需要支持“可撤销”和“恢复撤销”操作时。(2)当系统需要将命令发起者和命令执行者解耦,使得两者不直接交互时。(3)当需要设计一组命令,并且命令之间可以相互组合时。场景模拟:在空白画板上绘制各种图形(圆、三角形、矩形、直线),每种图形可重复绘制,并且系统支持已绘制图形的撤销。UML类图
2021-04-16 11:34:37
361
原创 设计模式之工厂模式(C++)
设计模式的一条重要原则是:在系统中引入新功能时,千万别去修改老代码,只去添加新代码即可!===================================================================一、工厂模式概述:工厂工厂,顾名思义就是负责加工生产的方法,工厂模式属于“创建型设计模式”,他提供了一种创建对象的方式,不会对客户端暴露创建对象的逻辑,并且使用抽象工厂提供的公共接口来完成对象的创建,一句话概况就是工厂模式封装了不同对象的创建过程。二、应用场景:如果我们只有一个类c
2021-04-14 17:30:04
812
原创 设计模式之策略模式(C++实现)
应用场景:如果一个业务功能中同时包含了多种相似的算法,而且每次都需要动态地去选择其中一种算法来执行。为了减少各种算法类与算法调度类之间的耦合度,建议使用“策略模式”!实战案列:MPC中的点云转栅格功能,就是根据点云的强度值或者高程或者RGB颜色来生成栅格,这其中就对应了3种栅格生成算法。UML类图:策略模式的C++实现:步骤1:抽象算法类AbstractStrategy与3种具体算法类#pragma once#include <iostream>// 定义A、B、C三种算法的枚举
2021-04-08 11:47:04
282
原创 QT中信号槽连接的注意点
最近在QT项目开发过程中遇到了信号槽连接的两个坑,故记录下来,供日后查阅!界面类MyWidget代码如下:#include <QtWidgets/QWidget>#include "ui_MyWidget.h"class MyWidget : public QWidget{ Q_OBJECTpublic: MyWidget(QWidget *parent = Q_NULLPTR); void onOrange(); void onApple();priv
2021-02-07 21:31:39
289
1
原创 QT5多线程学习(多文件同步处理)
在QT开发过程中遇到耗时的操作一定要使用“多线程技术”,可以避免GUI无响应和卡死的问题。下面使用一个小Demo来模拟多线程下多文件的处理过程程序设计思路:在主窗体上获取文件列表,将m个文件分割成若干份,平均分配到不同的子线程中去并行处理。主界面上支持人工设置开启线程数量。...
2021-02-03 11:47:14
2084
6
原创 QT + VS2017 添加资源文件
(一)准备工作MainWindow中工具栏的添加在对象查看器中右击QMainWindow对象->添加工具栏(可以添加多个)在动作编辑器中将需要的QAction直接拖拽到对应的工具栏里边,实现菜单栏与工具栏按钮的同步,如图:(二)资源文件添加(1)将所有图片放到各自文件夹下,并将文件夹拷贝到VS工程项目所在位置。(2)事实上在新建VS项目的时候,系统会自动为你建好一个与项目本身同名的的“*.qrc文件”。我们可以直接双击打开,利用“Add Prefix”添加前缀;“Add Files”
2021-01-19 22:29:13
4913
原创 VS2017 + QT中使用QAxObject类的注意事项
最近项目中需要对word文档进行操作,于是想借助于QT来实现,通过网上查阅资料后发现需要引入以下两个头文件:#include <qaxwidget.h>#include <qaxobject.h>但是添加头文件之后编译报错:“无法打开源文件”。原因在于当前工程中并没有包含相应的模块,于是在项目属性中按照下图方式进行配置:勾选ActiveQt sever模块(需要什么模块就勾选什么),点击Finish:当工程比较庞大时,添加了新模块之后编译器可能无法及时反应过来,仍然提
2020-10-19 20:50:40
2761
原创 利用GDAL库实现点云转栅格(GeoTif格式)
一、主要借助于GDAL库中的GDALRasterBand类的RasterIO成员函数来操作CPLErr GDALRasterBand::RasterIO ( GDALRWFlag eRWFlag,int nXOff,int nYOff,int nXSize,int nYSize,void * pData,int nBufXSize,int nBufYSize,GDALDataType eBufType,int nPixe
2020-09-02 14:17:22
3185
2
原创 RANSAC算法平面圆拟合_C++实现
输入一组点云,使用RANSAC算法进行平面圆拟合,得到圆心和半径#include <iostream>#include <random>#include <cmath>struct PointCloud3d{ double x,y,z;}bool RansacCircle(QList<PointCloud3d>& cloud, double* circlePara){ int cloudSize = cloud.size()
2020-05-17 09:21:41
3941
5
原创 利用GDAL库生成矢量点图层
C++代码如下:struct PointCloud3d{ double x,y,z;}//形参filePath:生成的shapfile文件全路径,形如:"C:\\Users\\gm\\Desktop\\tree.shp"bool CreatePointShpFile(const string& filePath, const QList<PointCloud3d>& points){ int pointCount = points.size(); if (!
2020-05-17 09:02:31
1053
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人