Qt之QStackedWidget详解
QStackedWidget的内部实现其实就是一个QStackedLayout 属性(Property)count:返回子窗口的数量 currentIndex:返回当前窗口的索引值 信号(Signals)**void currentChanged(int index)**:当前窗口改变发出此信号 **void widgetRemoved(int index)**:窗口被移除发出此信号 槽函数(Public Slots)**void setCurrentIndex(int index)**:通过子窗口的索引值设置当前可见的窗口,index为-1时都不可见。通常与QComBox的currentIndexChanged信号结合起来使用 **void setCurrentWidget(QWidget *widget)**:通过子窗口的窗口指针设置当前可见的窗口 公有函数(Public Functions)1、添加、插入、移除窗口函数 123int addWidget(QWidget *w);int insertWidget(int index, QWidget *w);void remove ...
Qt之XML文件解析(DOM)
Qt之XML文件解析(DOM)XML简介 和HTML的语法很相似,但不同之处在于: HTML 被设计用来显示数据,其关注的是数据的外观,XML 被设计用来传输和存储数据,其关注的是数据的内容,因此,XML主要用来作为数据的存储和共享。 XML文档是一种树的结构,从根部扩展到枝叶。以下是一个XML示例 123456789101112131415<?xml version="1.0" encoding="UTF-8"?><root> <!--写入矩形图元的信息--> <class name="Rect"> <object name="obj1"> <x1>10</x1> <y1>10</y1> <x2>50</x2> <y1>50</y1> <linewidth>2</linewidt ...
Qt之XML文件解析SAX
Qt之XML文件解析SAXXML简介 和HTML的语法很相似,但不同之处在于: HTML 被设计用来显示数据,其关注的是数据的外观,XML 被设计用来传输和存储数据,其关注的是数据的内容,因此,XML主要用来作为数据的存储和共享。 XML文档是一种树的结构,从根部扩展到枝叶。以下是一个XML示例 123456789101112131415<?xml version="1.0" encoding="UTF-8"?><root> <!--写入矩形图元的信息--> <class name="Rect"> <object name="obj1"> <x1>10</x1> <y1>10</y1> <x2>50</x2> <y1>50</y1> <linewidth>2</linewidth& ...
QT图元的连接
QT中图元使用线连接 关于线图元的设计请看我上一篇文章。 思考 在使用线图元(LineObject)将两个其他图元(A,B,…)连接之后,若要在移动其他图元时让线图元也跟随移动(重绘),可以让线图元维护两个节点(Line_Node_1和Line_Node_2),这两个节点分别与A、B两个图元相连接,而A,B两图元也分别维护着自己的节点,如下图所示 当使用线图元将A与B连接起来时,线图元的节点将分别与A_Node_1和B_Node_1绑定,Line_Node_A -> A_Node_1 ,Line_Node_B -> B_Node_1,此时当A或B移动时,线图元的节点也将跟随变化,这里线图元维护的两个节点也恰好时线的起始点StartPoint和终止点EndPoint,最后重绘即可。 具体实现关于节点的绑定: 如果在线图元中定义两个QPointF指针,当鼠标左键点击开始绘制时,首先判断起点处是否有图元存在,如果有图元存在,则判断该图元的节点中哪一个离当前点击的点距离最近,找到最近的那一个,然后重新设置线图元的起点坐标为该点,并使起点节点的 ...
关于C++&Python混编实现算法检测的两种方法
前言 本文提供了将Python算法嵌入C++或C语言的两种实现思路。算法大多是由Python语言编写,而我们开发软件大多使用的还是C++,比如常见的QT、C#等,两种不同的语言之间如何实现通信呢?有的将算法打包为.exe文件,通过软件去启动这个.exe,这种方法并不优雅。我们知道Python的底层是C语言编写,叫CPython,本文方法便是通过CPython调用Python脚本,实现数据交互。 假设我们现在使用QT开发软件界面,通过摄像头去识别物体,所用算法为YoloV5,将带有检测结果的视频显示在QT界面上。 方法一 QT开启一个视频接收的线程,通过opencv接收,将每一帧图像存放在消息队列中,假设消息队列叫srcMatQueue;再开启一个图像检测线程,将图像从srcMatQueue中取出,将图像传递给Python算法,获取返回之后的图像,并存入消息队列detectMatQueue中;再主线程(GUI)中,取出detectMatQueue中的图像,转为QImage格式,然后显示即可。 这里重点介绍第二个图像检测线程。首先,要调用CPython,我们需要包含其头文件 ...
QT加载百度离线地图(二)
感谢小郭软件提供的离线地图下载工具,这个失效了,文章末尾会附上下载链接,使用方式参见链接 一、下载离线地图相关文件确保文件夹baiduLX_JS-master\bmap-offline\下的tiles、tiles_hybird、tiles_satellite中是空的,我们需要下载我们自己的地图文件 如何下载地图?(1) 双击运行BMapTool程序,(2) 切换导航到“下载地图”(3) 点击区域下载,在地图上画个框后,弹出窗口中选择瓦片级数(4) 选择目录并点击确认后,打开下载工具(5) 在下载工具中点击“开始下载”。最后得到的离线文件结构如图其中得images、libbrary、modules不需要改动,map3.0.js和map3.0_init.js是你的网页文件index.html需要引用的,也不要改动,除非你要修改离线地图瓦片的保存位置,需要修改map3.0_init.js文件,tiles、tiles_hybird、tiles_satellite是我们下载的地图瓦片文件,sample.html是作者提供给我们的示例文件,可以修改为我们的index.html 二、在QT中创建 ...
QT加载百度在线地图(一)
一般步骤 在百度地图开发者网站中获取密钥 在QT中创建示例工程 创建网页index.html 运行 参考 一、在百度地图开发者网站中获取密钥选择Javascript API完成以下三步在控制台->我的应用里便可以查看自己应用的Key 二、在QT中创建示例工程需要注意的点是, 必须选择MSVC编译 在pro文件中添加1QT += webenginewidgets 将Widget控件提升为QWebEngineView 在路径`G:\QT\Qt_data\Examples\Qt-5.13.0\webchannel\shared`下拷贝`qwebchannel.js`文件备用,此文件是QT程序与JS文件通讯用的 `Widget.h` 代码 12345678910111213141516171819202122232425262728293031#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QWebEngineHistory>#include <QWebEng ...
Pandora loT使用UART3
Pandora loT使用uart3进行数据收发1 引脚定义潘多拉开发板预留了一些IO口供我们使用,其中便有PB10和PB11,其引脚功能查看数据手册如下: 使用USB转TTL将开发板连上电脑,下载口uart1也要连接 2 新建工程打开RT-Studio,新建基于芯片STM32L475VETx的工程,下载口选择SWD. 3 修改配置 修改applications->main.c 12345678910111213141516171819202122232425262728#include <rtthread.h>#include <board.h>#include <rtdevice.h>#define DBG_TAG "main"#define DBG_LVL DBG_LOG#include <rtdbg.h>#define LED0_PIN GET_PIN(E,8)int main(void){int count = 1;rt_pin_mode(LED0_PIN, PIN_MODE_OUT ...
实现图片滑动效果
效果展示:相关代码.h文件 123456789101112131415161718192021222324252627282930313233343536#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#define IMAGE_WIDTH 300#define IMAGE_HEIGHT 200#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endifQT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr); ~MainWindow(); QStringList getImageFil ...
Sqlite数据库基本操作-增删改查
准备工作1. 创建数据库文件2. 打开数据库3. 创建表格4. 插入数据5. 更新数据6. 查询某行某列7. 获取一列数据8. 删除一行数据9 关闭数据库文章涉及到使用sqlite数据库保存整型,字符串,二进制以及时间类型的操作 在QT中调用Sqlite需在.pro文件中添加 1QT += sql 本文使用停车系统中使用的数据库为例,我们先创建一个结构体把我们需要保存的数据整理一下,便于操作 1234567891011typedef struct SQL_DATA{ QString t_pl; /* 车牌号 */ QString t_location; /* 车位号 */ QString t_card; /* 卡号 */ int t_featuresize; /* 人脸特征数据大小 */ QByteArray t_featuredata; /* 人脸特征数据 */ QString t_datetime; /* 存车时间 */ //int t_wa ...