C++
阿达和自己
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt设置右键菜单无效customContextMenuRequested(const QPoint &pos)
想着先声明QMenu然后根据右键的不同类型节点弹出不一样的菜单,结果这样一直无法显示菜单。调试发现代码是按照预想的逻辑走的,后面想起一种可能:QAction在if里面定义,离开if的时候,QAction对象已经被释放掉了。再次运行,果然没问题了,又学到了。原创 2024-03-07 18:09:50 · 1151 阅读 · 0 评论 -
解决QMYSQL driver not loaded问题
把源码解压到qt安装路径下,打开\qtbase\src\plugins\sqldrivers\mysql,用Qtcreator打开mysql.pro。这时还需要把\MySQL\MySQL Server 8.0\lib目录下的libmysql.dll和libmysql.lib复制到\5.15.2\msvc2019_64\bin目录下。一查才发现\5.15.2\msvc2019_64\plugins\sqldrivers目录下没有qsqlmysql了,5.5.1是有的,5.15.2是要自己编译的。原创 2024-03-06 10:45:48 · 725 阅读 · 0 评论 -
Qt 通过pdfium将网络上的pdf显示为图片
遇到个需求,就是在qt客户端显示服务器上的pdf文档,文档以base64格式返回给客户端。原创 2024-03-05 18:14:15 · 1315 阅读 · 0 评论 -
Qt添加程序版本信息
在.pro文件添加以下代码。原创 2024-02-23 11:13:45 · 956 阅读 · 0 评论 -
C++实现计算复杂数学表达式
本文使用C++实现Shunting-yard算法,将中缀表达式转换为后缀表达式,然后使用后缀表达式计算结果,实现了目前支持以下。的组合,实现代码如下。原创 2024-02-29 17:50:47 · 810 阅读 · 0 评论 -
QT封装mysql数据库访问接口
QT封装mysql数据库访问接口,封装增删改查接口原创 2022-07-07 10:44:08 · 2155 阅读 · 3 评论 -
QComboBox过滤下拉选项
Qt QComboBox过滤下拉选项原创 2022-05-26 15:43:16 · 1638 阅读 · 0 评论 -
QSqlQuery遍历查询结果
QT封装Mysql查询接口原创 2022-05-26 15:03:09 · 3358 阅读 · 0 评论 -
QT插件开发学习笔记
看了一天,总结了下,可能有理解不到位的地方,仅供参考。我的理解插件开发主要分三块,插件接口,插件,主程序,uml如下图所示。1、插件接口插件接口主要关联接口和标识符,并提供声明一些通用辅助函数。#ifndef PLUGININTERFACE #define PLUGININTERFACE #include <QString> // 定义接口 class PluginInterface { public: virtual ~PluginInterface() {} virtual原创 2022-04-11 10:35:45 · 753 阅读 · 0 评论 -
AcDbAlignedDimension部分组件显示设置
①、②尺寸界线,由setDimse1、setDimse2控制显隐③、④箭头,setDimsd1、setDimsd2控制显隐,也同时控制⑤尺寸线显隐原创 2021-12-30 17:42:01 · 624 阅读 · 0 评论 -
ObjectArx获取实体周长
以下方法只能用于继承于AcDbCurve的类型主要使用两个接口派生类中此函数的实现应返回, 并将endParam设置为曲线端点的参数。如果成功则返回Acad::eOk。默认情况下, 该函数返回Acad::eNotImplemented。 virtual Acad::ErrorStatus getEndParam(double&endParam) const;计算从曲线的起点到param指定的点的曲线段的长度。如果成功则返回Acad::eOk, 如果param超出范围则...原创 2021-12-30 10:00:35 · 888 阅读 · 0 评论 -
ObjectArx块内元素显示排序
1、AcDbSortentsTable1.1、类简介AcDbSortentsTable是绘制订单信息的持久容器。它位于关键的ACAD_SORTENTS下的关联AcDbBlockTableRecord的扩展字典中。AcDbSortentsTable包含一组对象ID /句柄对。对象ID是要绘制的实体的对象ID, 并且句柄是块表记录中的实体的句柄(通常但不总是与关联的对象ID不同), 其表示绘制顺序中的位置。实体按递增句柄值的顺序附加到块表记录中; 换句话说, 句柄值越高, 它就越晚出现在块表记录中.原创 2021-12-30 09:56:27 · 1215 阅读 · 2 评论 -
Arx遍历块内实体
ObjectArx 遍历块内实体原创 2021-12-30 09:50:54 · 1994 阅读 · 0 评论 -
QT dll项目使用MFC编译问题
做了一个Qt的dll,用与做cad插件的一个控制界面,因为要想cad发命令,不可避免的需要用到MFC的东西,但是在写好demo后编译程序却一直报错,如下图:提示需要定义_AFXDLL在属性 - C/C++ - 预编译器 - 预编译器定义 添加_AFXDLL,问题解决但是_AFXDLL是个什么玩意来的呢...原创 2021-08-18 09:29:10 · 194 阅读 · 0 评论 -
ObjectArx 设置填充透明度问题
初始化透明度参数AcCmTransparency对象时,需要调用setAlpha设置透明度值,这里传入的值是0~255,但cad特性面板上显示的是0~90,且经过测试发现,传入值与特性面板显示的值也是不同的,比如传入90,显示64,百度搜索了个寂寞,最后还是在谷歌找到了答案,原来设置的值和特性面板显示的值有个转换关系:int alpha = (int)(((255-value)*100)/255);所以要在设置透明度之前把值做下转换,像这样// 设置填充透明度AcCmTransp...原创 2021-08-16 17:45:17 · 561 阅读 · 0 评论 -
pdfium实现pdf转图片
编译好的pdfium库64&32位下载:链接:https://pan.baidu.com/s/18TIg_2QutYJ8_imIIgLoRg提取码:xyij需要依赖以上库文件,里面包含64位和32位的库文件,是从一位大神那里要来的,pdfium编译太难了。直接上代码,注释写的很详细,不再赘述。char * getFileContents(const char *fileName, size_t *size){std::fstream instream;instrea..原创 2021-05-19 10:56:37 · 3645 阅读 · 2 评论 -
QMessageBox设置中文按钮
QMessageBox *msgBox = new QMessageBox(QMessageBox::Question, QSW("确认删除"),QSW("是否删除?"), QMessageBox::Yes | QMessageBox::No, parent);msgBox->button(QMessageBox::Yes)->setText(QSW("删除"));msgBox->button(QMessageBox::No)->setText(QSW("取消"));原创 2021-05-11 10:59:01 · 421 阅读 · 0 评论 -
MFC打开文件选择对话框
bool ret = false;// 打开文件选择对话框CFileDialog dlgFile(TRUE, // TRUE则显示打开对话框,FALSE则显示保存对话文件对话框。NULL, // 默认的文件扩展名NULL, // 默认的文件名OFN_HIDEREADONLY, // 指明一些特定风格。 (默认OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)_T("图片 (*.jpg)|*.jpg|所有类型 (*.*)|*.*||"), // 设置可供原创 2021-04-26 16:50:30 · 679 阅读 · 0 评论 -
MFC遍历文件夹(递归)
CFileFind finder;BOOL bWorking = finder.FindFile(zipPath + _T("\\*.*"));while(bWorking){ bWorking = finder.FindNextFile(); CString strPath = finder.GetFilePath(); if(finder.IsDirectory() && !finder.IsDots()) { // 文件夹递归调用...原创 2021-04-26 16:48:25 · 640 阅读 · 0 评论 -
MFC获取注册表值
/*!* @brief 获取指定注册表路径的键值** @param const CString& path 注册表路径* @param const CString& key 字段名* @param [out] CString& value 获取到的返回结果* @return bool 成功获取返回true** @author 刘杰达* @date 2020年11月19日*/bool _getRegValue(const CString&am原创 2021-04-26 16:46:33 · 721 阅读 · 0 评论 -
MFC下实现压缩和解压缩功能
解压zip库(解决文件名中文乱码问题).zip,将zip.h,zip.cpp,unzip.h,unzip.cpp添加到你的项目下,下面是一个封装了简单压缩和解压的方法,注释已经很详细了,不再赘述。递归压缩文件夹和文件 /*! * @brief 将一个文件夹下的文件添加到压缩文件 * * @param const HZIP& zip 压缩操作对象 * @param const CString& zipPath 被压缩的文件或文件夹路径 * @param...原创 2021-04-26 15:26:07 · 3345 阅读 · 6 评论 -
MFC下载网络文件到本地计算机
此方法依赖wininet.lib属性 - 配置属性 - 链接器 - 输入 - 附加依赖项 - 编辑实现代码如下#include "WinInet.h"#define MAXBLOCKSIZE 1024/*!* @brief 下载一个文件到本地计算机** @param const CString& url 文件链接* @param const CString& savePath 文件保存到本地计算机的文件夹路径** @return bool 下载成功原创 2021-04-26 14:47:52 · 538 阅读 · 0 评论 -
ocx中添加接口
1、打开类视图将鼠标移动到菜单栏 - 视图(V) - 点击类视图2、打开添加接口向导展开【项目名称 】- 展开【项目名称Lib】 - 右键【_D项目名称】 - 将鼠标移到【添加】选项 - 选择【添加方法(M)...】3、设置接口信息设置函数【返回类型】 - 设置【方法名】 - 设置内部【内部名称】 - 设置【参数类型】 - 点【完成】注:方法名对应的是对外暴露的接口名,内部名称是项目内部的实现函数名称,一般设置为一样的比较好找接口可设置多个参数,选择【参数类型】 - 选择原创 2021-03-22 09:56:51 · 639 阅读 · 0 评论 -
C++的几种char类型
在C++中,char是基本的字符类型,但却不仅仅有这一种字符类型! 类型 含义 该类型数据所占的最小比特位数 char 字符 8位(即可表示28个字符) wchar_t 宽字符 16位 char16_t Unicode字符 16位 char32_原创 2021-01-26 15:37:38 · 5696 阅读 · 0 评论 -
将一个多段线按一些点分割成一个或多个线段
函数原型:virtual Acad::ErrorStatus getSplitCurves( const AcGePoint3dArray& points, AcDbVoidPtrArray& curveSegments) const;参数:const AcGePoint3dArray& points 在曲线上的分割点数组(在WCS坐标中)AcDbVoidPtrArray& curveSegments 返回带有指向原始子曲线...原创 2021-01-06 16:33:56 · 2010 阅读 · 0 评论 -
ObjectArx 文本获取文字的实际宽度
在给一个文本实体套一个图框的时候发现实体的宽度是固定的,并不是文字的实际占用尺寸通过getGeomExtents获取到的坐标是实体的实际坐标,如果用这个结果框一个图框,可能会在框内留出比较多的空白空间,多行文本AcDbMText需要用actualWidth,单行文本AcDbText需要用到widthFactor。/*! * @brief 获取文本实体真实宽度 * * @param const AcDbObjectId& id 文本实体id * @return double 返回文本原创 2020-12-07 10:39:26 · 2151 阅读 · 0 评论 -
测试ocx(MFC ActiveX控件)
通过创建一个ocx项目编译后可以生成以下文件其中testCtl.ocx就是我们最终需要的插件可以通过cmd命令将控件注册到本地电脑regsvr32 D:\code\testCtl\Debug\testCtl.ocx为u了方便也可以写到批处理文件中,下次使用的时候直接双击批处理文件就可以了注销命令是regsvr32 /u D:\code\testCtl\Debug\testCtl.ocx测试ocx有两种方式1、使用VS自带的控件容器tstcon32来测试(可以使用eve原创 2020-11-25 09:46:36 · 1765 阅读 · 0 评论 -
创建一个ocx项目
本次笔记使用的工具是vs20131、文件 - 新建项目 - 已安装 - 模板 - Visual C++ - MFC - MFC ActiveX 控件,如下图,点击确定2、MFC ActiveX 控件向导,点击下一步(直接点击完成也可以)3、应用程序设置,默认设置就好,点击下一步4、控件名称,设置控件名(注册以后可以再“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes”下找到对应名称控件)5、控件设置,根据需要修改,测试demo默认就行原创 2020-11-25 09:37:08 · 304 阅读 · 0 评论 -
Qt 信号槽连接方式
通常使用的connect,实际上最后一个参数使用的是Qt::AutoConnection类型:Qt支持6种连接方式,Qt5删除了Qt::AutoCompactConnection1.Qt::DirectConnection(直连方式)(信号与槽函数关系类似于函数调用,同步执行) 当信号发出后,相应的槽函数将立即被调用。emit语句后的代码将在所有槽函数执行完毕后被执行。2.Qt::QueuedConnection(排队方式)(此时信号被塞到信号队列里了,信号与槽函数关系类似于...原创 2020-06-23 15:12:15 · 517 阅读 · 0 评论 -
Qt 播放pcm文件
简介做了个简单的处理pcm数据的demo主线程创建一个子线程,获取QAudioOutput一个周期所需要的数据量,循环的从文件中取出一个周期的数据量压入子线程的队列。子线程创建后返回QAudioOutput一个周期所需要的数据量,开始等待主线程压入数据,当数据队列中有数据时将数据写入QAudioOutput缓冲区,当QAudioOutput对象内部缓冲区不足存放下一个数据包时,等待一毫秒后再处理。bytesFree()返回内部缓冲区的空闲空间的字节数,每次写入所需的数据量periodSize原创 2020-06-19 18:15:17 · 999 阅读 · 0 评论 -
Qt信号槽的四种写法
概述这四种写法在最新版本的Qt中都可用,有比较简单的写法,也有比较复杂的写法,为了理解其中的差异,不妨先定义个控件:class Button : public QWidget {Q_OBJECTpublic:explicit MyButton(QWidget *parent = nullptr);signals:void sigClicked();void sigClicked(bool check);};class Widget : public ...原创 2020-05-27 14:36:10 · 6520 阅读 · 0 评论 -
QT 读取文件夹下的所有文件列表
QDir::entryInfoList(QStringList filter);可以获取文件夹路径下的所有文件信息QDir dir(path);if (dir.exists(_imagePath)) {QStringList filters;// 文件筛选,可以置为空,获取所有文件信息filters << "*.jpg" << "*.png";QList<QFileInfo>files = dir.entryInfoList(filters);原创 2020-05-27 14:32:26 · 4177 阅读 · 2 评论 -
QT 字符串与图像转换
//图片到字符串,关键在于要使用toBase64转为字符串QString pixmapTostring( const QPixmap& pixmap ){QByteArray byte_array;QDataStream data_stream(&byte_array,QIODevice::WriteOnly);data_stream<<pixmap...原创 2020-04-01 14:13:03 · 1252 阅读 · 0 评论 -
通过 GetSystemTimes获取CPU占用率
目录GetSystemTimes函数算法完整代码运行结果GetSystemTimes函数BOOL WINAPI GetSystemTimes(__out_opt LPFILETIME lpIdleTime, // 空闲时间__out_opt LPFILETIME lpKernelTime, // 内核进程占用时间__out_opt LPFILETIME l...原创 2020-03-19 09:52:59 · 2202 阅读 · 2 评论 -
QUdpSocket BindFlag各个元素意义
BindFlag 这些值可以组成不同的标志,传递给QUdpSocket::bind()函数来修改bind()的特性。BindMode 是typedef for QFlags<BindFlag>。它是BindFlag值得或操作。1、QUdpSocket::DefaultForPlatform = 0a. 当前平台的默认选项b. 在Unix和Mac OS上,该选项等同于D...原创 2020-01-08 20:02:46 · 2465 阅读 · 0 评论 -
关于面向对象多态的理解
子类对象地址可以赋值给父类指针,可以通过父类指针调用与子类函数名和参数表相同的虚函数,在程序运行时,当父类指针指向父类对象的地址时则调用父类的虚函数,当父类的指针指向子类对象的地址时调用子类的虚函数,让同一条函数语句调用达成不同的结果。比如学校发通知元旦班级要有人去表演,同学A可以代表我们班去表演,同学B也可以,也可以整个班一起上去表演,代码和结果如下。#include <stdli...原创 2020-01-08 19:58:38 · 625 阅读 · 0 评论 -
C++ 获取当前设备公网IP
/*!* \brief 根据域名获取ip* WIN32** \param char * domain 需要解析的域名* \return const char * 解析结果*/void getDomainIP(const char * domain, char * ip){char ** pptr = NULL;int i = 0;char szHostName[256] = ...原创 2019-07-13 16:08:05 · 1974 阅读 · 0 评论 -
QT QCombBox 控件设置下拉选项中某项不可选
QComboBox *editor = new QComboBox(this);comboBox->addItems(QStringList()<<tr("Always")<<tr("Never")<<tr("Motion detection")<<tr("Timer recording"));QVariant v(0);// 序号为2的...原创 2019-07-13 16:08:55 · 3778 阅读 · 6 评论 -
QT实现不规则窗体
常见的窗体都是方形的,有时候也需要其他形状的窗体,Qt实际上也支持的,可以通过setMask()为窗设置遮罩,实现不规则窗体,遮罩后的窗口大小还是原来的,只是被遮罩的地方看不见了,变成透明的而已。具体实现代码如下:shapewiget.h 代码#ifndef SHAPEWIGET_H#define SHAPEWIGET_H#include <QWi...原创 2019-07-10 19:42:22 · 870 阅读 · 0 评论 -
QT实现自动添加滚动展示图片
公司让做一个人脸识别展示窗口,主要包括预览窗口、抓拍图片和对比展示窗口,当视频中检测到人脸时抓拍图片并和图库中的图片比较,这里只提供界面实现代码。运行效果如下,代码中注释比较完整,就不废话了,具体可以下载完整代码看一下。下载地址:https://download.youkuaiyun.com/download/qq_28742901/11603881...原创 2019-08-23 16:32:37 · 889 阅读 · 0 评论
分享