自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 BUG记录-窗体初始化时无法正确获取控件大小

【问题描述】在窗口构造函数中进行初始化,获取控件的尺寸,与窗口显示出来后的尺寸不一致;【原因】只有窗口执行完构造函数之后,才能正确获取控件的大小;【解决方案】先显示窗口再隐藏,然后再获取控件大小//先显示窗口再隐藏,用于正确获取控件的大小setAttribute(Qt::WA_DontShowOnScreen);show();hide();setAttribute(Qt::WA_DontShowOnScreen, false);...

2023-10-10 13:21:23 483

原创 VS+Qt应用开发-自定义绘图功能

VS+Qt应用开发-自定义绘图功能效果展示界面设计代码例程完整代码CMyAdjustPoint.hCMyAdjustPoint.cppCMyChordItem.hCMyChordItem.cppCMyCirItem.hCMyCirItem.cppCMyConCirItem.hCMyConCirItem.cppCMyEllipseItem.hCMyEllipseItem.cppCMyItemBase.hCMyItemBase.cppCMyLineItem.hCMyLineItem.cppCMyPieItem.

2021-12-25 11:40:17 4974 5

原创 Qt基础-QProgressDialog进度对话框

Qt基础-QProgressDialog进度对话框进度对话框可用于在加载大文件时显示进度,常见用法如下:QProgressDialog progress;progress.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint); //不显示进度条上的“最小化”“最大化”“关闭”progress..setWindowTitle("任务保存"); //窗口标题progress.setsetAutoClos

2021-08-21 16:40:26 8820 2

原创 Qt基础-QString和QStringList互转

Qt基础-QString和QStringList互转QString转QStringListQString str = "name1,,name2,name3"; QStringList list1 = str.split(","); //list1 : ["name1","","name2","name3"]QStringList list2= str.split(",",QString::SkipEmptyParts); //list2 : ["name1","name2","n

2021-08-20 16:42:08 7453

原创 Halcon进阶-彩色图像只显示2通道

使用decompose3将彩色图像进行通道分离,单通道显示只能显示灰度图,如果只想显示其中某两个通道组合成的彩色图,即将第三通道设置为全透明,可使用以下方法:*读取图像read_image (Templeteimg, 'templeteImg.bmp') decompose3 (Templeteimg, Image1, Image2, Image3)get_image_size (Image1, Width, Height)*生成空图像gen_image_const (Image, 'byt

2021-08-19 17:58:01 613

原创 Qt进阶-QTableView表格进阶功能1

本文展示的功能是类似与Photoshop的通道选择,具体展示如下:具体功能有:1.第一列显示眼睛图标,第二列显示各通道的缩略图,第三列显示文字;2.点击眼睛图标切换当前行的选中状态,点击后两列显示当前图像3.RGB选中时R、G、B通道均选中4.R、G、B通道均选中时选中RGB...QLabel m_eyeLabels[4]; //表格的第一列图标,眼睛QLabel m_imgLabels[4]; //表格的第二列图标,各通道缩略图QStandardItemModel

2021-08-19 16:06:57 796

原创 判断串口号

串口线的引脚编号及含义如下图所示:可以看到引脚2负责接收数据,引脚3负责发送数据,因此可以通过以下方法判断串口的串口号:短接串口的2、3两针,形成一个自发自收的环境;查看设备管理器中的串口号用串口调试助手打开上述串口,发送数据,如果该串口能接收到自己发送的数据,则是该串口号。...

2021-08-16 18:33:42 1573

原创 安装教程-opencv3.1.0安装及VS2013配置教程

opencv3.1.0安装及VS2013配置教程安装准备opencv3.1.0安装包下载安装步骤安装opencv3.1.0第一个VS应用安装准备准备opencv3.1.0安装包、提前安装VS2013。opencv3.1.0安装包下载下载链接: https://opencv.org/releases/.找到对应的版本安装步骤安装opencv3.1.0双击打开opencv-3.1.0.exe,选择安装位置,单击“Extract”;等待安装完成即可;第一个VS应用新

2021-08-16 16:39:08 1396 1

原创 Qt进阶-只改变QGroupBox的标题栏字体而不改变内部的字体

Qt进阶-只改变QGroupBox的标题栏字体而不改变内部的字体通常情况下,在属性编辑器中设置QGroupBox的字体,QGroupBox的标题栏和内部控件的字体会同时改变如果只想改变标题栏字体而不改变内部控件字体,可参考以下步骤:右键QGroupBox,打开“改变样式表”;将以下代码写入样式表中并应用,但是此时标题并不会改变;QGroupBox::title{ font-size: 13px; font-weight: bold; }此时再通过属性编辑器中设置的字体设置即

2021-07-22 09:51:27 3984 1

原创 Qt5.3的BUG-关闭事件中串口发送数据问题

问题描述:在Qt5.3.0中,想在主界面的关闭事件中通过串口发送多条数据,如果发送的语句放在QMessageBox之后,则只有第一条数据能成功发送,如果发送语句前没有QMessageBox,则可以全部发送。验证:测试1: 使用Qt5.3.0,发送的语句放在QMessageBox之后//关闭事件void MainFrm::closeEvent(QCloseEvent *ev){ int ans = QMessageBox::question(this, "提示", "是否关闭?", QM.

2021-07-12 16:33:16 442

原创 Qt例程-Qt中使用CAD插件

Qt例程-Qt中使用CAD插件1.插件下载及注册2.使用插件1.插件下载及注册到梦想CAD官网下载插件,官网地址:https://www.mxdraw.com/download.html,下载2d开发包;双击安装插件;以管理员身份运行RegMxDrawX.bat,注册插件;插件注册成功界面如下图;2.使用插件在Qt设计师界面拖入一个QAxWidget;右键-设置控件,或者双击控件;选择MxDrawX52 Control;设置完成后如下图所

2021-07-10 10:48:33 2656

原创 Qt进阶-汉字转拼音/全拼

Qt进阶-汉字转拼音/全拼加载拼音文件加载简拼数组汉字转拼音汉字转全拼拼音字符加载拼音文件因为拼音字符太长,直接在代码中赋值会超过编译器限制,所以需要放到文件中加载,将文末的拼音字符粘贴到ChineseToPinyin.txt中QStringList listPY; //拼音列表//从配置文件读取拼音数组QFile file("./ChineseToPinyin.txt");if (file.open(QFile::ReadOnly | QFile::Text)){ QStrin

2021-07-02 14:36:18 30907

原创 Qt进阶-TCP网口通信

Qt进阶-网口通信获取当前IP获取当前IPQList<QHostAddress> addressList = QNetworkInterface::allAddresses(); //获取所有的网络列表QString IP = "";for each(QHostAddress address in addressList){ //获取Ipv4网络,并且非空且不等于127.0.0.1 if (address.protocol() == QAbstractSocket::IPv4

2021-07-02 12:42:31 2224

原创 Qt基础-QSerialPort串口类

Qt基础-QSerialPort串口类枚举设备上的串口枚举设备上的串口QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts(); //获取设备的串口列表//冒泡排序法进行排序 for (int i = 0; i < ports.size();i++){ for (int j = i + 1; j < ports.size(); j++) { QString name = ports.at(i

2021-07-01 13:33:09 3704 1

原创 Qt进阶-鼠标拖动移动窗体

Qt进阶-鼠标拖动移动窗体正常情况下,鼠标拖动标题栏才能移动窗体,如果想拖动窗体内部移动或者窗体为无边框,可通过鼠标事件移动窗体:ui->widget->installEventFilter(this); //注册事件过滤器//事件过滤器bool Widget::eventFilter(QObject *watched, QEvent *event){ static bool isMousePressed = false; //鼠标是否按下 static QPoint mo

2021-06-30 10:12:04 833

原创 Qt进阶-事件过滤器eventFilter的使用

ui.pushButton->installEventFilter(this); ui.pushButton_2->installEventFilter(this);bool QtTest::eventFilter(QObject *w, QEvent *e){ if (e->type() == QEvent::MouseButtonPress) { QString a = w->objectName(); int b = 1; return 0; }

2021-06-30 09:51:05 650

原创 Qt进阶-绘制一个电池

说明:MyBattery类继承自QWidget,在界面添加一个widget控件,提升为MyBattery类,将滑动条的valueChanged事件与sls_setValue()槽绑定。borderWidth = 5; //边框宽度borderRadius = 5; //边框倒角currentValue = 0; //当前电量alarmValue = 30; //电池电量警戒值bgRadius = 5; //背景电量倒角alarmColo

2021-06-29 19:38:11 686

原创 Qt进阶-图片(文本)与base64编码互转

Qt进阶-图片/文本与base64编码互转图片转base64base64转图片文本转base64base64转文本图片转base64QString imageToBase64(QImage image){ if (image.isNull()) { return; } QByteArray imageData; //保存图片数据的字符数组 QBuffer buffer(&imageData); //将字符数组与buffer缓存区绑定,以便写入数据 image.save

2021-06-29 14:21:58 1499

原创 Qt基础-QFile文件类、QFileInfo文件信息类

获取文件的名称(不包括路径)QString fileName = QCoreApplication::applicationFilePath();QFileInfo fileInfo(fileName);QString name = fileInfo.fileName(); //****.exe获取文件的路径(不包括文件名)QString path = fileInfo.absoluteFilePath();获取文件大小qlonglong size = fileInfo.si.

2021-06-26 13:00:00 960

原创 Qt基础-QTableView、QTableWidget用法

设置列宽度ui.tableWidget->setColumnWidth(0, 100); //设置第1列宽度为100设置焦点显示模式ui.tableWidget->setFocusPolicy(Qt::NoFocus);//设置无焦点设置滚动条显示//设置不显示竖直滚动条ui.tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);选择行ui.tableWidget->se.

2021-06-22 19:13:58 3503 2

原创 Qt进阶-显示当前时间及应用程序运行总时间

Qt进阶-显示当前时间及应用程序运行总时间首先在界面上拖入一个QLabel控件(label_totalTime)、一个QLCDNumber控件(lcdNumber),参考代码如下:QDateTime startTime; //开始计时的时间QDateTime currentTime; //当前时间QString strInterval; //运行总时间QTimer m_tUpdateTime; //定时器void init(){ startTime = QDateTime

2021-06-22 12:49:55 2591

原创 Qt进阶-获取程序的编译时间

QString dateTime = __DATE__;dateTime = QLocale(QLocale::English).toDateTime(dateTime, "MMM dd yyyyhh:mm:ss").toString("yyyy.MM.dd");QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss");

2021-06-21 19:49:52 1755

原创 Qt基础-QDir目录类

将目录中的斜杠/转换为反斜杠\,使用QFileDialog打开的是斜杠QDir::toNativeSeparators(path);

2021-06-21 19:32:58 1172

原创 Qt进阶-设置应用程序启动画面

在打开程序时如果有耗时的操作,可以显示一个启动画面,表示软件已经在打开中。int main(int argc, char *argv[]){ QApplication a(argc, argv); QPixmap pixmap(":/QtTest/Resources/1.jfif"); QSplashScreen *splash = new QSplashScreen; splash->showMessage("程序启动中...", Qt::AlignLeft, Q

2021-06-21 18:52:23 539

原创 Qt进阶-阻塞/非阻塞延时

阻塞延时:阻塞当前进程,直到延时结束,方可进行其他操作(此时如果有界面,界面会卡住)方法1:QThread::msleep(2000);方法2:void sleepMsecSuspend(int msec){ QTime curTimer = QTime::currentTime(); QTime nowTimer; do { nowTimer = QTime::currentTime(); } while (curTimer.msecsTo(nowTimer) &lt.

2021-04-20 21:04:15 4206 1

原创 图像处理之Hobject与Mat互转

Hobject是Halcon中的图像格式,Mat是OpenCV中的图像格式,以下是二者的转换using namespace cv;using namespace Halcon;//Hobject转MatMat Hobject2Mat(Hobject Hobj){ HTuple htCh = HTuple(); char* cType=""; Mat Image; convert_image_type(Hobj, &Hobj, "byte"); count_channels(Ho

2021-03-30 20:29:18 2829 2

原创 VS+Qt应用程序开发-保存数据至csv表格文件

新建一个名为saveCsvTest的项目,打开Qt Designer设计师界面, 向界面中加入以下控件对象名如下:新建表格:btn_newCsv插入当前文件:btn_insertHeader插入当前文件(无时间):btn_insertData插入当前文件(第一列为时间):btn_insertDataWithTime表头数据:lineEdit_header单元格数据:lineEdit_datasaveCsvTest.h#pragma once#include <QtWidget

2021-03-30 19:38:17 1150 1

原创 BUG记录-afx.h error C2018:未知字符“0x18”

【问题描述】在使用basler相机SDK进行软件开发时,打开相机MFC的Demo,在一台电脑上可以正确运行,在另外一台电脑上编译报以下错误,但是非MFC的Demo可以打开;上图最后一个错误在afxwin.h文件中,打开此文件,第26行提示错误;此时在此文件中打开 afx.h,出现以下提示;【原因】afx.h文件损坏或出现乱码;找到afx.h的路径,打开后发现是乱码:【解决方案】将乱码的afx.h替换掉即可...

2021-02-23 20:31:05 987 1

原创 Qt基础-使用Qt案例中的控件风格ArthurStyle

在Qt某些案例中,Qt提供了自定义的控件风格,如在Vector Deformation中,控件风格如下:可以将上述控件风格应用到自己的Qt项目中,应用方法如下:找到Qt案例中的shared文件夹,里面的文件即为Qt自定义的风格;将整个shared文件夹复制到自己项目文件夹内;将文件夹内所有内容添加到项目内;将新风格应用到项目中,在main.cpp中修改#include "shared\arthurstyle.h"int main(int argc, char *ar

2021-02-10 16:37:34 324

原创 Qt基础-设置按钮背景颜色

使用QPalette无法设置,可以使用样式表:QColor color = QColorDialog::getColor(Qt::black, this, "请选择颜色");int r = 0, g = 0, b = 0;color.getRgb(&r,&g,&b);ui.btn->setStyleSheet(QString("background-color: rgb(%1,%2,%3)").arg(r).arg(g).arg(b));...

2021-01-27 22:37:32 5799 4

原创 VS使用技巧-利用“\”换行

在VS中,如果一条语句过长,可以利用符号""进行换行:int a = 1 + 2+ 3 + 4 + 5\ + 6 + 7 + 8;

2021-01-23 22:05:26 2667

原创 BUG记录-QBitmap之Microsoft Visual Studio C 运行库在 MyVision.exe 中检测到一个错误

【问题描述】定义了一个全局变量QPixmap g_currentImg,编译之后报以下错误【原因】需要在创建QGuiApplication/QApplication之后才能实例化QPixmap;【解决方案】使用QImage代替QPixmap作为全局变量。

2021-01-19 21:44:16 322

原创 Qt基础-给应用程序添加版本号等信息

一般地,在软件图标上,通过右键->属性,可以查看软件的详细信息,如文件说明、版本号等;但是通过VS+Qt生成的应用程序默认是没有这些信息的;可以通过添加资源文件的方式进行设置,具体步骤如下:打开资源视图,会有一个“项目名称.rc”的文件夹;右键->添加资源,弹出下面的对话框;选中“version”,点击新建,会自动生成一个文件,打开后,双击某一项就可以进行更改;改完之后,重新编译,发现软件的详细信息就都有了。...

2021-01-16 16:23:01 3505 1

原创 BUG记录-Qt无法定位于程序输入点***于动态链接库***.exe上

【问题描述】将Qt应用程序的代码转移到新电脑上时,编译通过,但是在运行时出现提示“Qt无法定位于程序输入点******于动态链接库******.exe上”,网上搜索有的说是Qt库的问题,重新用windeployqt命令后也不行【原因】Qt版本不同,使用windeployqt命令后无法更新Qt的dll【解决方案】将exe所在文件夹与Qt有关的文件全部删除,然后再次使用windeployqt重新提取Qt的依赖项即可。...

2021-01-16 13:17:56 952

原创 Qt基础-获取当前路径(currentPath和applicationDirPath)

QString QDir::currentPath()返回的是启动应用程序的父进程如果在VS中运行,则返回的是源文件和头文件所在的路径;如果直接双击exe运行,则返回的是exe所在的路径;QString QCoreApplication::applicationDirPath()无论在什么情况下,返回的都是exe所在的绝对路径。...

2021-01-16 12:30:26 11278

原创 VS使用技巧-利用条件编译区分当前的编译环境(x64/x86、debug/release)

在项目开发中,如果要适应不同的平台,需要将项目在不同的环境下编译,如x64/x86、debug/release,如果涉及到外部依赖库,需要重新配置属性,加载不同环境下的依赖库,此时,可以利用宏及条件编译,自动判断当前的编译环境,以便自动选择需要加载的依赖库或进行不同的操作;几个宏定义及解释如下:宏解释_M_IX86Win32_M_X64x64_DEBUGdebug在代码中可使用条件编译进行判断,然后加载不同的依赖库#ifdef _M_IX86

2021-01-16 11:52:51 1875

原创 BUG记录-使用Qt的getOpenFileName()无法筛选文件格式

【问题描述】按如下代码书写,无法正确筛选文件格式QFileDialog::getOpenFileName(this, "1", "./", "图像(*.bmp);;所有文件(*.*)");```【原因】使用了中文的括号,下图未设置编码格式可以发现,中文字符是乱码,中文括号也是乱码【解决方案】将括号改为英文括号QFileDialog::getOpenFileName(this, "1", "./", "图像(*.bmp);;所有文件(*.*)");```...

2021-01-15 09:43:51 870

原创 Halcon基础-判断图像是黑白还是彩色图像-count_channels

算子count_channels算子原型count_channels(MultiChannelImage : : : Channels)算子参数MultiChannelImage :要判断的图像Channels:图像的通道数,通过此参数判断是黑白还是彩色Halcon举例:read_image (Vessel, 'vessel')count_channels (Vessel, Channels)C++举例:Hobject img;HTuple channels;...

2021-01-13 22:41:13 2506

原创 Halcon案例-二维码识别(基于C++和Qt)

二维码

2021-01-10 00:26:38 1140

原创 Qt基础-使窗口居中显示

有时候使用show()函数并不会让窗口显示在桌面中间,或者由于windows状态栏的影响,窗口偏下,需要减去状态栏的高度,可使用以下方法://用于正确获取控件的大小,一定要在show()之后,frameGeometry()才能正确获取setAttribute(Qt::WA_DontShowOnScreen);dlg.show();dlg.hide();setAttribute(Qt::WA_DontShowOnScreen, false);//获取windows工作区域(不包括状态栏)QRe

2021-01-09 23:24:52 1612

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除