- 博客(33)
- 资源 (10)
- 收藏
- 关注
原创 VS生成动态库和VS加载QT生成动态库总结。
VS生成动态库注意:vs生成动态库需要在到处的函数中加入(__declspec(dllexport) )标识符。如果没有标记需要到处的函数只会生成dll文件,不会生成lib文件。如下代码需要导出add函数:__declspec(dllexport) int add(int a, int b);VS加载QT生成动态库注意:1、在创建lib工程的时候不要勾选lib否则只能生成静态链接库。如下图:1、在需要导出的类中加入文件关键字宏:QTCLASSLIBRARY1_EXPORT一般是工程名称大写
2021-04-22 14:48:14
1147
原创 C/C++ 函数指针使用总结
函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下:int add(int nLeft,int nRight);//函数定义该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可:int (pf)(int,int);//未初始化则pf可指向int(int,int)类型的函数。pf前面有,说明pf是指针,右侧是形参列表,表示pf指向的是函数,左侧为int,说明pf指向的函数返回值为int。则pf可指向int(int,int)类
2021-04-20 14:28:37
121
原创 QT 自带进度条类的使用案例
QProgressDialog的使用案例#include <QtWidgets>#include <QtConcurrent>#include <functional>using namespace QtConcurrent
2021-04-20 10:42:46
139
原创 QT强制类型转换
QT强制类型转换在C++开发中经常要进行数据类型的强制转换。刚开始学习的时候,直接对基本数据类型强制类型转换,如float fnum = 3.14; int num = (int)fnum;随着C++标准的发展,又提供了dynamic_cast、const_cast 、static_cast、reinterpret_cast等高级安全的强制转换方法。dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast。const_cast: 主要针对const和volatile
2021-02-23 13:37:26
2192
原创 VS 配置外部DLL的引用路径
VS 配置外部DLL的引用路径右键项目,属性->配置属性->调试->环境,在这里写入可执行文件运行时的环境路径,格式为:PATH=ABC,如PATH=$(SolutionDir)/env这样,我们就可以把运行时需要的dll放在env文件夹下,便于管理,而不必再将DLL放在EXE所在目录下。但注意的是:这个配置只在VS运行时才有用,程序发布时没什么用。程序发布时DLL还是要和EXE放在同一目录,其它资源也要相对EXE配置好层次,比如原来的PROJECT下引用了 shader/vert
2021-02-22 14:41:43
1748
4
原创 Qt写串口通信
Qt写串口通信前言:如果用qt写程序作为上位机,然后通过和usb和下位机通信的时候,就需要用到qt中的串口通信了。使用qt中的串口通信的时候需要用到的两个头文件分别为:官方文档使用串口需要包含的库文件一般来讲qt串口通信需要经过7步:1、设置串口名(如COM1):serial = new QSerialPort; serial->setPortName(ui->PortBox->currentText());同时可以使用自动寻找可用串口的方法,直接自动设置了fore
2021-01-25 12:38:46
2526
原创 QT 中scene removeItem() 的使用注意事项
QT 中scene removeItem() 的使用注意事项Qt中使用视场scene->removeItem() 只是从视场中移除对象,图项的内存并没有释放,如过需要及时释放内存还是需要delete,或者当视场被销毁时同时释放。
2021-01-21 16:00:30
1946
原创 QImagne和Mat间相互转换
QImagne和Mat间相互转换cv::Mat QImage2cvMat(const QImage &image, bool bGray = true) { cv::Mat mat; switch (image.format()) { case QImage::Format_ARGB32: case QImage::Format_RGB32: case QImage::Format_ARGB32_Premultiplied: mat = cv::Mat(image.
2021-01-20 15:56:38
123
原创 QT可通过控制点改变大小的矩形框
QT可通过控制点改变大小的矩形框源码下载链接:https://download.youkuaiyun.com/download/weixin_43607300/14094294效果如下:部分代码#include "DrawRect.h"DrawRect::DrawRect(QRect rect){ codec = QTextCodec::codecForName("gbk"); m_Rect = rect; //创建控制点 newControlPoint();}DrawRect::Dr
2021-01-11 09:52:37
1250
原创 使用QT中的QSqlQuery创建数据库及使用QSqlTabelModel删除,增加,修改数据库
使用QT中的QSqlQuery创建数据库及使用QSqlTabelModel删除,增加,修改数据库1.QSqlDatabaseQSqlDatabase类提供了一个接口,用于通过连接访问数据。QSqlDatabase的一个实例表示连接。该连接通过受支持的数据库驱动程序之一提供对数据库的访问,该驱动程序派生自QSqlDriver。1.1 创建一个数据库示例如下QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName
2021-01-05 17:36:00
1308
原创 VS中设置桌面显示图标
VS中设置桌面显示图标创建一个记事本,将后缀名改为.rc。IDI_ICON1 ICON DISCARDABLE "girl.ico"
2021-01-04 13:08:36
759
1
原创 QT 黑色风格+白色风格+淡蓝色风格样式表。
QT 黑色风格+白色风格+淡蓝色风格样式表下载链接:加载样式表程序: //加载样式表 //QFile file("black.css"); //QFile file("white.css"); QFile file("blue.css"); if (file.open(QFile::ReadOnly)) { QString qss = QLatin1String(file.readAll()); QString paletteColor = qss.mid(20, 7); qAp
2020-12-31 17:04:47
1700
原创 QT样式表的使用
QT样式表两种方式的使用一、在程序中设置样式表// 对单个控件;ui.pushButton->setStyleSheet("QPushButton{border-radius:5px;background:rgb(150, 190, 60);color:red;font-size:15px;}")// 对整个界面(包括界面上所有的控件)this->setStyleSheet("QPushButton{border-radius:5px;background:rgb(150, 190,
2020-12-31 10:08:51
250
原创 QT解决UI设计器显示和运行显示不一致问题
QT解决UI设计器显示和运行显示不一致问题在主程序中加上这段代码 if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true);
2020-12-29 19:28:39
1442
原创 QT在VS中创建解决中文问题。
QT在VS中创建解决中文问题。在需要用到中文的类 .cpp文件上加上该段代码。#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif
2020-12-29 17:05:42
104
原创 opencv绘制灰度直方图
绘制灰度直方图void testshowHistoCallback(){ //把图像分割成三个通道BRG vector<Mat> bgr; split(img, bgr); //创建有256个子区间的直方图 //值的可能数量为【0.255】 int numbins = 256; //设置范围(BGR)最后一个值不包含 float range[] = { 0, 256 }; const float* histRange = { range }; Mat b_hist,
2020-12-28 17:44:14
356
原创 opencv中的直方图均衡化
opencv中的直方图均衡化 Mat result; //BGR图像转化为YCbCr Mat ycbcr; cvtColor(img, ycbcr, COLOR_BGR2YCrCb); //图像通道分离 vector<Mat> channels; split(ycbcr, channels); //只均衡Y通道 equalizeHist(channels[0], channels[0]); //合并结果通道 merge(channels, ycbcr); //将Y
2020-12-28 17:37:49
154
原创 opencv YML文件读写(FileStorage 类)
opencv关于YML的读写 //创建写 FileStorage fs("test.yml", FileStorage::WRITE); //保存ini int fps = 5; fs << "fps" << fps; //创建mat文例 Mat m1 = Mat::eye(2, 3, CV_32F); Mat m2 = Mat::ones(3, 2, CV_32F); Mat result = (m1 + 1).mul(m1 + 3); //打印结果 fs &
2020-12-28 12:00:06
454
原创 Qt 通过重写QGraphicItem实现绘制、拖动、缩放、旋转矩形
Qt 通过重写QGraphicItem实现绘制、拖动、缩放、旋转矩形1.实现绘制矩形:只要定义一个全局变量QRectF m_oldRect,在外面矩形大小传进来,然后在paint函数里面绘制这个矩形就行2.实现拖动矩形:重写mousePressEvent,mouseMoveEvent,mouseReleaseEvent,记录鼠标按下的起始点和移动时候的点,并用moveBy()函数来移动矩形即可3.实现缩放:在矩形内部靠近4条边的地方定义4个矩形,当鼠标按下的时候在这4个矩形方框内,则将矩形往4个方向拉
2020-12-27 21:59:49
3318
1
原创 QtConcurrent之filter函数的使用
QtConcurrent之filter函数的使用filter是过滤的意思,QtConcurrent::filter函数就是用来实现并行过滤的。filter和map函数的使用方式是一样的,分为filter、filtered和filteredReduced三个函数。1.filter函数过滤一个序列,该序列的内容被修改。2.filtered函数过滤一个序列,远序列的内容不被修改,过滤后的结果存在一个新的序列中。3.filteredReduced函数过滤一个序列,过滤后的结果用一个函数计算最终获得一个值
2020-12-25 11:20:53
468
原创 QtConcurrent之map函数的使用
QtConcurrent之map函数的使用学习了QtConcurrent的run函数使用,重点是在说QtConcurrent实现了多线程。实际上应该说多线程让QtConcurrent实现了并行可能更准确点。不然map函数就不好理解了。那么QtConcurrent的map函数又有什么用呢?这就要先看看map的参数了。map函数有两个参数,第一个是序列(如QList),第二个参数是一个函数。它的作用就是同时用第二个参数来计算第一个参数中的每一个元素,且结果直接覆盖到元素中。如QtConcurrent::m
2020-12-25 11:15:58
1017
原创 Qt多线程之QtConcurrent
Qt多线程之QtConcurrent我觉得QtConcurrent有个很霸气的介绍。用谷歌翻译如下:“QtConcurrent命名空间提供了高级API,可以在不使用低级线程原语的情况下编写多线程程序”。不知道什么叫高级,我觉得应该是指使用时不关心底层多线程的实现而显得高层次吧。本想概括一下QtConcurrent的使用步骤,奈何发现QtConcurrent根本就不是个东西啊,它只不过是个命名空间。真正发挥作用的是该命名空间下定义的函数,这里要说的就是run函数(刚开始我还以为QtConcurrent只有r
2020-12-25 10:55:39
5229
1
原创 Qt的线程池QThreadPool
Qt的线程池QThreadPool线程可以帮助我们处理耗时的操作以防止界面卡死,也可以提高程序的并发性。但线程也不是创建越多越好,因为创建、销毁线程以及切换线程都是需要消耗资源的。线程池技术的出现就是为了解决这个问题。线程池维护一定数量的线程,并充分使用它们。Qt封装的线程池类是QThreadPool,它的使用需要QRunnable来配合。概括一下使用步骤如下:1.从QRunnable派生一个类,重写run()函数。把需要子线程干的活放到run函数中。2.调用QThreadPool的start()开
2020-12-25 10:41:34
679
原创 Qt中Qimage转opencv mat图片
Qt中Qimage转opencv mat图片方法一:单通道Mat matTOimge(QImage & mage){ QImage::Format format = mage.format(); if (format != QImage::Format_Indexed8) { cout << "此函数只适用于单通道灰度图片的转换"; return Mat(); } mage.convertToFormat(QImage::Format_Grayscale8);
2020-12-24 17:27:13
543
1
原创 opencv转Qimge
opencv转Qimge(单通道灰度图像)QImage * matTOimage(Mat & mat){ if (mat.type() == CV_8UC1) { cout << "此函数只适用于单通道灰度图片的转换"; return nullptr; } QImage *testImage = new QImage(mat.cols, mat.rows, QImage::Format_Grayscale8); //创建单通道的QImage图片并分配内存 ucha
2020-12-24 16:10:13
920
1
原创 C和C++内存拷贝函数
C和C++内存拷贝函数头文件所在头文件 <string.h>或< cstring >函数原型_CRTIMP int __cdecl __MINGW_NOTHROW memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE;第一个参数:目的地址第二个参数:源地址第三个参数:所需要复制的字节数...
2020-12-24 15:37:44
122
原创 openCV中图片的截取函数
openCV中图片的截取函数/**@parameter cvRect:opencv中的Rect的矩形数据结构*/cv::Mat mRoiImage = mSrcImg(cvRect).clone();使用注意事项1、截取的Rect矩形大小不可以超过图片的大小。2、截取的Rect区域不可超图片区域,否则后崩溃。...
2020-12-24 13:32:43
635
原创 QT5创建文件夹
QT5文件夹的创建//创建数据处理目录 QDir dir; dir.cd(ROIimageFilePath); //关联根目录路径 if (!dir.exists(defectInformation))//判断根目录下子目录件夹是否存在 { dir.mkdir(defectInformation); //创建文件夹 }
2020-12-24 13:20:52
626
原创 QT5 XML文件文件的基本操作
基于c++QT5 文件的基本操作#include <QCoreApplication>#include <QtXml> //也可以include <QDomDocument> //写xmlvoid WriteXml(){ //打开或创建文件 QFile file("test.xml"); //相对路径、绝对路径、资源路径都可以 if(!file.open(QFile::WriteOnly|QFile::Truncate)) //可以用Q
2020-12-24 12:54:11
309
NewSys_2020-4-27.rar
2020-04-27
安川配套YRC1000.zip
2020-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人