
qt
qt学习历程
蜉蝣之翼❉
这个作者很懒,什么都没留下…
展开
-
qt 带复选框的下拉列表
参考下拉列表拉出来的那个界面可以是 QAbstractItemView ,比如QListWidget。设置好其他的操作就和 QListWidget 一样了。所以 我们想要在下拉列表里加入复选框,只需要设置即可。同理,下拉列表还可以是表格形式。原创 2022-11-11 14:14:50 · 2592 阅读 · 2 评论 -
qt 根据xml文件动态显示参数配置界面(进阶)
把解析到的信息存到结构体中:首先这个结构体不能完全写死,不然之后增删改属性很麻烦。实际上控件的所有属性都是一个键值对,所以可以用 map存储typedef struct WidgetELEM //控件详细信息 {//控件类型 map < string , string > m_simp;//控件元素 map < string , string > m_simpRange;//取值范围 } WidElement;解释:所有的键值对都存放在 m_simp中。控件类型很重要单独领出来。原创 2022-11-08 15:20:38 · 4189 阅读 · 1 评论 -
QT QTableView 委托:垂直表头
于是我只能用 QStyledItemDelegate托管,把本来要显示在水平表头的文字,显示在最后一行,并用QStyledItemDelegate绘制竖直文字。我们判断QModelIndex& index行号,如果在m_rowSet就旋转文字,并且去掉网格线。最方便的方法就是,水平表头可以旋转文字,使得文字垂直显示。但是我没有找到很好的代码。我需要在垂直及水平表头显示 很长的信息,但是,如果文字过长,这个表也会被拉很长。因为我是最后一行需要 旋转文字,所以还需要一个成员变量记录哪一行需要旋转。原创 2022-11-07 16:19:32 · 1918 阅读 · 0 评论 -
C++ qt cv::imwrite 含中文路径问题解决
中文使用 toLocal8Bit().data()原创 2022-10-12 15:05:14 · 1183 阅读 · 0 评论 -
Qt :圆圈加载进度条(转圈圈)
圆形环形。原创 2022-10-11 15:49:07 · 4074 阅读 · 1 评论 -
使用QtCharts报错
选择 qt modules。然后 这里还是报错了。原创 2022-10-10 17:12:46 · 2403 阅读 · 1 评论 -
qt 判断逻辑表达式
用户需要设定规则,我们根据用户输入的数值判断是否符合规则。示例一:(数字我随便敲的)现在来了一批样品,得到了属性width等的数值。要判断样品是否合规。原创 2022-09-29 10:41:35 · 1192 阅读 · 0 评论 -
基于开源库dxflib解析dxf文件: qt绘制多段线
在dxflib库中多段线图元和优化多段线图元均是通过这两者读出,首先在addPolyline(const DL_PolylineData& data)中获得点数(data.number)和标志位(data.flags),其中点数表示了addVertex中的点数,而标志位则表示了该多段线的闭合。所以我们需要遍历每个DL_PolylineData ,得到该多线段有几个顶点,是否闭合,然后从m_vecDxfVertexs把顶点取出来。然后遍历m_vecDxfPolylines 找到每一段线段对应的点,绘图。原创 2022-09-28 08:48:58 · 3889 阅读 · 5 评论 -
qt svg模块源码解析2
上回说到,我们继续看一下怎么解析出圆等形状svg 圆代码原创 2022-09-27 17:01:03 · 478 阅读 · 0 评论 -
qt svg模块源码解析1
enum QXmlStreamReader::TokenType:此枚举指定读取器当前读取的类型。其中DTD 的目的是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构,与画图无关。用 QXmlStreamReader *const xml;读取svg文件,并解析。文档开始StartDocument,结尾EndDocument,注释都不需要关注。拿到标签名 localName,首先要对他们分类。如果标签为以下节点,分别返回不同的函数指针。解析标签名的首字母判断标签的含义,如下。原创 2022-09-26 16:43:19 · 888 阅读 · 0 评论 -
基于开源库dxflib 解析dxf文件,qt绘制线段
在cad中颜色是不rgb的形式,而是一个索引(int)对应一个rgb值。其中 line的颜色和宽度保存在DL_Attributes,点的信息保存在DL_LineData中。从线段的数据中获取颜色索引 int nColor =attributes.getColor();如果索引nColor == 256 || nColor == 0,则从层的信息里面寻找。color的值有时候是根据layer的属性来的,所以首先要解析layer的数据。我们把dxf文件中所有线段的数据都保存到。然后我们遍历层的数据。原创 2022-09-19 16:18:50 · 2464 阅读 · 2 评论 -
Qt 图片 等比例显示、放大、缩小、平移图像 显示
【代码】Qt 图片 等比例显示、放大、缩小、平移图像 显示。原创 2022-09-13 14:57:14 · 8723 阅读 · 0 评论 -
QLabel 动态计算文本大小,省略号代替过长文本
有时候不让换行,但是随着客户改变窗口大小,有些文字视觉上会被遮挡,就需要计算显示多少文字了。根据窗口的大小计算显示的文本,显示不下,在右边显示省略号.文本过长可以勾选 WordWrap 为true。改变窗口大小时调用resizeEvent函数。原创 2022-09-08 10:40:39 · 1064 阅读 · 0 评论 -
QT QTableWidget QListWidget 整行拖放移动位置
然后要重写eventFilter(QObject *obj, QEvent *eve)其中 pTableWidget 是主界面的一个 QTableWidget。最后是交换两行的数据。原创 2022-08-31 16:06:55 · 2602 阅读 · 0 评论 -
QLineEdit 中增加按钮
【代码】QLineEdit 中增加按钮。原创 2022-08-29 16:29:51 · 1005 阅读 · 0 评论 -
Qt 之QDockwidget 自定义窗口标题栏
这个比较简单,就是继承QWidget,挨个添加需要的控件即可,详情见源码三个地方注意构造函数QWidget *parent不设置默认值,确保调用的时候,把QDockwidget的指针传进来成员变量QPushButton* m_pButtonFloating;样式//获取qt默认图标 m_pButtonFloating = new QPushButton(floatIcon , "" , this);");......原创 2022-08-25 17:41:33 · 3527 阅读 · 0 评论 -
qt 禁止点击 屏蔽鼠标事件
该属性的含义是“透明掉鼠标事件”。设为true时表示启用该属性,即当前小部件及其children部件将不再响应鼠标事件。Qt默认没有启用该属性。可用于 屏蔽 鼠标事件。测试 就在界面随便点击 ,也没有出泵任何控件,没有引发槽函数,直接就崩了!我开了一个线程上传文件夹,用一个进度条显示进度。不知道为什么崩了,所以直接禁止点击!原创 2022-08-19 16:21:08 · 3923 阅读 · 0 评论 -
QDialog::accept() 退出方式
模态对话框:在没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。非模态对话框:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。设置模态话对话框:Dialog w;w.exec();也可以使用show()方法,但是要设置bool值。代码如下:Dialog *w = new Dialog ;w->setModal(true);w->show();没有第二行则为 非模态化作用:设置两个按钮,判断用户用那种方式退出原创 2021-09-29 14:58:49 · 4563 阅读 · 0 评论 -
QTableWidget 使用方法(样式,添加按钮,添加复选框)
QTableWidget 使用方法原创 2022-08-10 15:40:47 · 7288 阅读 · 1 评论 -
qt 复杂界面信号槽设计
原本是 界面1给界面2发消息,现在是 界面1 给 Signals 发消息,Signals 给界面2发消息。这样的好处是,每次发送界面只管发送,接受界面只管接受,Signals 负责传递。比如,曾孙界面需要传消息给控制界面,就得一层一层往上传。再也不用管 父父子子复杂结构,还有一个信号多个地方接受处理了。这个时候按照传统的方式写信号槽就很痛苦。还有子界面和业务线程以及总控制界面的交互。...原创 2022-08-03 16:14:57 · 474 阅读 · 1 评论 -
QTableWidget 添加复选框,添加按钮
QTableWidget 添加复选框,添加按钮原创 2022-07-18 14:02:36 · 3886 阅读 · 0 评论 -
qt vs2017 如何添加资源文件.qrc
右键项目->添加新建项->QtResourceFile打开文件添加资源首先添加prefix在下面Prefix栏目可以编辑路径的名字然后在对应目录添加图片(addfiles)即可。原创 2022-07-18 09:07:29 · 3862 阅读 · 2 评论 -
qt TCP 网络编程
Qt 网络原创 2022-07-15 13:46:21 · 984 阅读 · 1 评论 -
QT 自定义开关效果的按钮
Qt 之自定义控件(开关按钮)Qt自定义控件13:继承QPushButton自绘按钮原创 2022-07-12 15:24:46 · 929 阅读 · 0 评论 -
QT: QDockWidget使用详解
略主界面需要继承 QMainWindow这个ui只需要一个空的界面就好h文件cpp文件原创 2022-07-07 14:24:07 · 3090 阅读 · 1 评论 -
vs2017 qt的各种坑
问题:。。。。。qt插件安装在两个文件夹C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions记得备份C:\Users\JC\AppData\Local\Microsoft\VisualStudio\15.0_3349af49\Extensions清空这个两个文件夹打开vs开发人员命令符执行 devenv.exe /setup /resetuserdata /resetsett原创 2022-07-05 10:23:41 · 243 阅读 · 0 评论 -
qt 自定义控件 :取值范围
自定义 取值范围的控件如下图所示功能 : 输入取值范围 (min,max)(min,max)(min,max),获取取值范围WithinRangeEdit.h 文件具体实现细节:控制数字的输入:采用正则表达式限制lineEidt的输入:可以输入正负 整数或者浮点数......原创 2022-06-28 15:46:18 · 737 阅读 · 0 评论 -
qt json
简单入门json基本规则:数据使用名/值对表示。使用大括号保存对象,每个名称后面跟着一个 ‘:’(冒号),名/值对使用 ,(逗号)分割。使用方括号保存数组,数组值使用 ,(逗号)分割。类QJsonValue用于封装JSON值类QJsonObject负责封装JSON对象,是键/值对列表,其中键是惟一的字符串,值由QJsonValue表示。初始化方式:QJsonObject jsonObject;jsonObject["key1"] = 1;jsonObject["key2"] =原创 2022-06-23 16:04:52 · 727 阅读 · 0 评论 -
vs2017 在调试状态不显示QString值的解决方法
下载文件qt5.natvisqt5.natvis 下载地址放到 :C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Packages\Debugger\Visualizers重启vsok原创 2022-06-21 11:29:51 · 524 阅读 · 0 评论 -
qt 多边形填充 生成语义分割的mask 灰度图
直接在QWidget界面显示,重写paintEvent即可如上图所示:没有path.moveTo(10, 10); 会从左上点开始画没有path.closeSubpath(); 最后封闭多边形的那条线就没有了。场景:输入:多边形的点集(有多个多边形)输出:一个矩阵,存成灰度图要求: 多边形1,圈出来的地方都填充数字1;多边形2圈出来的地方填充数字2.。。。。。背景全是0分析:步骤:在彩图上绘制并填充多边形这里我假设 ,从彩图转灰度图是只用到 rgb中的g,所以颜色只有g有值然后把彩图转原创 2022-06-10 15:40:59 · 955 阅读 · 0 评论 -
自动创建表
自动创建表unsigned :只能添加正数NOT NULL :不允许为空NULL:允许为空AUTO_INCREMENT :TIMESTAMP: 一种保存日期和时间组合的时间数据类型DEFAULT :默认值CURRENT_TIMESTAMP:当前时间ON UPDATE CURRENT_TIMESTAMP :该行数据其他列有值变化时(update)更新时间戳所以:createtime 创建该条记录时 默认值为当前时间updatetime 创建该条记录时 默认值为当前时间,并且该原创 2022-06-01 14:47:13 · 412 阅读 · 0 评论 -
qt 数据集查询大量数据之json长度上限
把数据库查询到的结果存在json中,返回给界面。但是貌似QT的json存储内容是由上限的关于QJson能解析的最大数据长度的源码分析所以我们每次只能查询一部分数据,然后循环查询思路入下:sqlselect * from dataset limit 0,1000;//检索记录行 0-1000select * from dataset limit 1000,1000;//检索记录行 1000-2000select * from dataset limit 2000,1000;//检索记录行 20原创 2022-05-31 10:41:49 · 859 阅读 · 0 评论 -
qt connect重复 槽函数会重复触发
现象ClassA::ClassA(QWidget* pParent) :QWidget(pParent){ connect(m_ui.btnNext, SIGNAL(clicked()), this, SLOT(Slot_next_clicked())); ``` connect(m_ui.btnNext, SIGNAL(clicked()), this, SLOT(Slot_next_clicked()));}说明:m_ui.btnNext是一个button,不小心把连接btnNext原创 2022-05-31 09:11:11 · 1775 阅读 · 0 评论 -
qt生成多级目录
QString LabelTab::getStandardPath(QString strPath){ QRegExp re("[\\\\]+"); strPath.replace(re, "/"); re = QRegExp("/+"); strPath.replace(re, "/"); return strPath;}bool LabelTab::createMultipleFolders(QString path, const FtpBaseInfo& ftpInfo).原创 2022-05-27 16:40:30 · 1216 阅读 · 0 评论 -
qt踩坑史:qt槽函数崩溃问题
我有一个槽函数是这么写的特点是槽函数运行事件比较长,需要几秒钟。频繁地点击可能会崩溃connect(m_ui.RefreshButton, SIGNAL(clicked()), this, SLOT(SlotRefreshButtonClicked()));void A::SlotRefreshButtonClicked(){ doSomethings(); //Take a few seconds}问题是:我们只点击一次把槽函数运行100次,等它运行完再点击运行。如下。它并不会崩溃v原创 2022-05-19 11:43:02 · 2081 阅读 · 0 评论 -
qt随机生成差异大的颜色,并且避开红色
https://blog.youkuaiyun.com/ColdWindHA/article/details/82080176采用hsv色彩模型在HSV模型中,用度数来描述色相,其中红色对应0度,绿色对应120度,蓝色对应240度。在这里插入图片描述 //采用hsv色彩模型,h是色相 其中h落在[0,15] [295,360]是红色系。所以避开红色的h的取值范围在[15,295] //当两个颜色h值相差很大时,颜色看起来差别大 QList<QColor> ColorList; int Len原创 2022-05-18 13:44:54 · 2451 阅读 · 0 评论 -
qt QGraphicsView 绘制多种图形
入门先看一个简单的例子#include "mainwindow.h"#include "ui_mainwindow.h"#include <QGraphicsScene>#include <QGraphicsView>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); ini原创 2022-05-09 15:39:30 · 11361 阅读 · 10 评论 -
新建一个QWidget类,导入另一个ui文件
首先用qt新建一个界面命名为 newUI.uivs中新建一个类:头文件:class newWidget: public QWidget{ Q_OBJECTpublic: explicit newWidget(QWidget* parent = Q_NULLPTR); virtual ~newWidget();private:Ui::newUI.ui* ui;#include "ui_newUI.h"newWidget::newWidget(QWidget* parent /*=原创 2022-04-27 15:58:45 · 1038 阅读 · 0 评论 -
QLineEdit 限制输入浮点数
利用正则表达式利用qt自带 QDoubleValidator ui.lineEdit_3->setValidator(new QRegExpValidator(QRegExp("^[1-9]\\d*$")));//非零的正整数 ui.lineEdit_6->setValidator(new QRegExpValidator(QRegExp("^\\d+(\\.\\d+)?$")));//非负浮点数 QDoubleValidator doubleValidator2(0, 100, .原创 2022-04-18 09:59:56 · 1864 阅读 · 0 评论 -
qt 踩坑指南一
qt界面更新只能在主线程中操作,在子线程中操作会有一定概率引发崩溃原因尚不清楚如果在子线程中操作界面,如何将更新界面的操作移到主线程:使用信号槽:自己给自己发送一个信号,在槽函数中处理界面更新操作。参考文献:QT多线程—主界面卡死解决方案...原创 2022-04-12 14:20:08 · 121 阅读 · 0 评论