小总结
九磅十五便士_
衬衫的价格是多少??
展开
-
Qt 在循环中超时跳出
主要使用Qt的 QElapsedTimer 类,调用QElapsedTimer中的成员函数elapsed,统计流失的时间。常见的一个需求,在一段循环中,给定一个最大运行时间,当循环时间超出时,终止。常用于一些工控场合,对节拍有要求的项目,在此简单的做一个总结记录。...原创 2022-08-04 12:02:13 · 1136 阅读 · 1 评论 -
Qt获取文件夹下所有文件
Qt获取文件夹下的文件或子文件夹原创 2022-07-28 09:59:31 · 8608 阅读 · 0 评论 -
在qt中遍历QGridLayout的items
QGridLayout中的setEnabled()不能改变LayOut中的控件的状态,因此当我们需要遍历Layout中所有的子控件,并且做一些属性的更改时,可以使用如下方法:auto f = [](QGridLayout* layout) { int num = layout->count(); for (int i = 0; i < num; ++i) { auto item = layout->itemAt(i); if (item &&原创 2022-04-08 19:46:19 · 1791 阅读 · 1 评论 -
halcon中try catch的使用
在此简单记录一下halcon中try catch的使用halcon已经将一些函数的catch定义完成,我们仅需要合理的打印出来即可:try { HalconCpp::ReadImage(&textImage, "ooo.jpg"); } catch (HalconCpp::HException& exception) { std::cout << (const char*)(exception.ErrorMessage()) << std:原创 2022-04-08 19:42:45 · 1182 阅读 · 0 评论 -
Qt中QMessageBox::StandardButton的简单使用
在此记录一个常用的问答形式 qmessagebox的用法: QMessageBox::StandardButton result; result = QMessageBox::question(this, QString::fromLocal8Bit("重要信息"), QString::fromLocal8Bit("xxxxxxx?????"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);原创 2022-03-19 17:29:49 · 2041 阅读 · 1 评论 -
Qt中QPainterPath的布尔运算
重写一个label控件的paintEvent,QPainterPath中重载了运算符void myLabel::paintEvent(QPaintEvent* event){ QRectF rect = QRectF(100, 100,600, 600); QPainterPath path; path.addRect(rect); QPainter painter(this); QPainterPath path2; path2.moveTo(150原创 2022-03-16 16:38:13 · 305 阅读 · 0 评论 -
QString和std::string的互转
在此记录一下QString和std::string的互相转化,主要真的是的包含有中的时的互相转化。QString转std::string #pragma execution_character_set("utf-8") QString qstr="你好 helloworld *&……%¥#@!"; QByteArray cdata = qstr.toLocal8Bit(); std::string cstr = std::string(cdata);std::s原创 2022-03-19 17:27:30 · 5057 阅读 · 0 评论 -
实时检测串口连接状态
废话不多说,在此记录一个实时检测串口链接状态的操作。struct SerialPortInfo{ std::string portName; std::string description;};std::string wstringToString(const std::wstring& wstr){ if (wstr.empty()) { return std::string(); } int size = WideCharToMultiByte(CP_ACP原创 2022-03-05 16:29:30 · 2034 阅读 · 0 评论 -
vector去除容器内重复元素
打开:QString FilePath = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("DXF File(*.txt) "));if (dxfFilePath == "") { return;}保存原创 2022-02-22 14:39:22 · 1431 阅读 · 1 评论 -
Qt 由字符串获取坐标
一般的,在日常使用中,通常默认将一个二维坐标表示为:(x,y)。在开发UI时,如果用户参照此格式输入坐标,可通过qstring的相关操作将此字符串转化为double类型:QString qstr = "(123.123,456.456)"; QString preQstr = qstr.section(',', 0, 0); QString afterQstrt = qstr.section(",", 1, 1); double x = preQstr.section("(", 1, 1).t原创 2022-02-21 12:16:31 · 673 阅读 · 0 评论 -
qmessageBox
在此记录一下一个常用的qmessageBox的应用QMessageBox::StandardButton result; result = QMessageBox::question(snapwindow, QString::fromLocal8Bit("标题"), QString::fromLocal8Bit("询问的一个事件??????????"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if (QMessageBo原创 2022-02-11 17:20:26 · 203 阅读 · 0 评论 -
QSettings的最简单使用
使用QSettings记录一些简单的配置,是开发过程中常用的操作。再次记录一下QSetting的简单使用。//向*.ini中写入QSettings* settings = new QSettings("test.ini", QSettings::IniFormat);settings->setValue("info", "hello world");delete settings;//获取*.ini中的某些数据QSettings* settings = new QSettings(原创 2022-02-09 09:23:12 · 219 阅读 · 0 评论 -
Mat转QImage
由于常常使用qt和opencv开发一些功能,在此记录一个使用频率很高的转换。cv::Mat类型的图像转换为QImageQImage Mat2QImage(const cv::Mat& InputMat){cv::Mat TmpMat;QImage Result;if (InputMat.channels() == 1){cv::cvtColor(InputMat, TmpMat, CV_GRAY2RGB);Result = QImage((const uchar*)(T原创 2021-11-28 14:18:57 · 2933 阅读 · 1 评论 -
Qt GDI绘图方法:
在上一篇博客中qt在视频上方添加透明窗体,写到了一种方法,能够简单避免qt控件遮挡第三方所显示的视频,但是那种方式实际上并没有从根本上解决问题。但是有的时候,使用Qt的GDI绘图,却能有奇效;在此简单记录一下qt GDI绘图的总结。以QLabel为例,重写QLabel的paintEngine(),使其返回值为空。对于需要GDI绘图的控件,在其构造函数中设置属性:setAttribute(Qt::WA_PaintOnScreen, true);获取该控件的句柄,DC:myLabel::m原创 2021-11-25 15:34:12 · 811 阅读 · 0 评论 -
Qt在视频上方添加透明窗体
在使用工业相机获取视频,或者其他设备获取视频时,为了保证效率,直接使用设备提供的sdk显示视频,能够最大限度地降低效率损失。减少了一些图像转换,数据传递的过程,但是这种情况也造成了另一个问题,第三方的显示窗口,我们无法直接进行修改。通常情况下,我们会想到在视频上方叠加一个控件,在该控件上做一些简单的绘图操作,或添加一些透明按钮,以达到想要的目的。但是事实上并不是这么简单。一般的,将widget或者label的句柄交出去,用其他的sdk直接显示一段视频(如相机自己的SDK),会出现遮挡状况。这种状况,原创 2021-11-24 17:09:01 · 2356 阅读 · 0 评论 -
c++读取TXT数据
常用的一个功能,读取txt中的数据,保存在自己定义的数组中:struct myPoint{ myPoint() {}; myPoint(const double &x,const double &y,const double& z) { this->x = x; this->y = y; this->z = z; }public: double x, y, z;};void MathGlClicked::loadDataFromTxt(原创 2021-11-14 15:57:58 · 1711 阅读 · 0 评论 -
二维图像坐标排序(转载)
转载:#include <vector>using namespace std;//对y方向上的点位进行排序bool SetSortRule(const Point p1,const Point p2){ if(p1.x < p2.x) return true; else return false;}//对x方向上的点位进行排序bool SetSortRule1(const vector<Point> p1,const vector<..转载 2021-10-20 17:37:31 · 877 阅读 · 0 评论 -
Qt qlistWidget的简单使用
QlistWidget获取文件夹下所有文件名称,双击打开选中文件:#include "SwitchDemo.h"#include"QDir"#include"QMessageBox"#include<QTextStream>#include<iostream>SwitchDemo::SwitchDemo(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); QListWidgetItem* it原创 2021-10-07 11:07:44 · 738 阅读 · 0 评论 -
C++全组合算法
在此记录一下c++全组合算法。以备不时之需#include <iostream>#include <vector>using namespace std;//求长度为number的组合/* 参数: v:基础元素集合 cur_v:当前递归过程中的中间组合变量 cur_index:当前递归处理到v中第几个元素了 number:要求的组合的长度值 result:用于保存组合结果*/template<class T>void Com原创 2021-09-29 15:30:11 · 724 阅读 · 0 评论 -
使用vs2019编译QCAD
QCAD是一个开源的2维CAD项目。并且拥有Windows macOS以及linux跨平台的解决方案。该软件的通用交换格式是*.dxf文件,专业版的qcad也支持dwg格式文件。下面通过这篇博客详细记录一下visual studio2019+qt5.15.2编译QCAD的过程,以及编译过程中遇到的一些麻烦和解决方案:1.获取qcad源码QCAD的源码可以通过Git获取:链接如下:https://github.com/qcad/qcad ,下载qcad-master即可。 完成下载后解压。2.原创 2021-09-28 15:44:27 · 1799 阅读 · 2 评论 -
c++组合算法
#include<iostream>#include<vector>#include<algorithm>using namespace std;vector < vector < double >> combination( const size_t& choose, const size_t& from) { vector<string> res; string wk = string(choo...原创 2021-09-24 11:07:18 · 128 阅读 · 0 评论 -
Qt调用虚拟键盘(软键盘)
qt作为一个好用的Ui交互制作工具,怎么能缺少外部的IO设备。在一些应用场景,往往需要一个软键盘(虚拟键盘),闲话少说,直接上方案:1.首先托几个能输入的控件,外加一个按钮2. 写代码就完事了:#include "keyBoard.h"#include<windows.h>keyBoard::keyBoard(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); connect(ui.pushBu..原创 2021-09-11 16:05:55 · 4325 阅读 · 6 评论 -
OpenCV窗口显示在Qt的控件上
使用OpenCV打开一张图片是一件很简单的事情,并且显示出来也非常的轻松,简单到只需两行代码,这是因为OpenCV本身提供了一个Highgui模块,用来做图片的交互显示。#include<opencv2/opencv.hpp>int main(){ cv::Mat src = cv::imread("lena.jpg"); std::string winName = "lena"; cv::namedWindow(winName, cv::WINDOW_AUTO原创 2021-09-06 11:08:22 · 7395 阅读 · 12 评论 -
在空间三维坐标系下的圆、直线和平面拟合
前言上个学期,在做项目的时候遇到了许多需要拟合的情况。但是在网上寻找资料的时候大多是建立在二维空间的,在三维坐标系下的拟合较乱。因此在下面列举一些我所用到的直线拟合和圆拟合。空间圆拟合在二维空间中对圆的拟合较为简单,由初中的几何知识我们可以知道,确定一个三角形至少需要三个不共线的点,因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,...原创 2019-03-12 18:12:23 · 13653 阅读 · 8 评论