- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 Qt 自定义event
在某些情况下,可能需要通过事件携带一些额外的数据可以通过自定义事件类来完成一种实现方法是自定义一个QObject的子类,通过property来携带数据Q_OBJECTpublic:这里通过一个自定义的窗口来发送自定义的事件,通过 QApplication::sendEvent(parent,evn);将事件传递给它的父窗口//sendEvent阻塞式发送信号//发出去的信号需要接收者通过event()进行处理});
2023-11-13 14:53:47
408
原创 Qt QTableWidget表格的宽度
通过setStretchLastSection可以将表格最后一列设置始终填满父窗口,这样当父窗口更改尺寸时,最后一列会动态更改宽度。这种情况可以友好应对某些列数据固定很短,有些列数据长度变化,而且可能较长。使得第0,2列宽度固定,第1,3列宽度可以伸缩。其中resize mode总共有如下几种设置。填充满父窗口,可以通过设置。
2023-11-10 19:48:22
1583
原创 Qt Creator插件
这里以Qt Creator 4.15.2版本的源码为示例进行分析源码结构如下,为了追溯其插件加载过程,从main.cpp入手Qt Creator的插件目录,生成的插件,好几十个呢。
2023-11-07 14:19:50
501
原创 QComboBox的信号
而且下拉框的setCurrentIndex()方法设置一个当前正处于的序号是不会发出currentIndexChanged信号的。QComboBox::activated信号发射在用户打开选择了选项后,即便选项与当前选项一致,也会发射该信号。这两个信号的发射顺序为,先QComboBox::currentIndexChanged。这里会有下拉框1改变导致下拉框2改变,下拉框2改变再导致下拉框1改变的死循环吗?不会造成死循环的原因在于两个下拉框的下拉项数码一致,而且每次关联后的序号也一致。
2023-11-06 14:27:15
2224
原创 QTableWidget单元格相关信号
(1)主要有 cellChanged,cellActivated,cellClicked,cellDoubleClicked,cellEntered,cellPressed以及相应的item类信号。通过一段代码详细说明QTableWidget的单元格被点击(包括单击和双击)以及内容被编辑时,发出的相关信号。通过以下代码,详尽地探索了,点击一个单元格,到点击另外一个单元格之间,到底Qt背后做了哪些事情。(2)各个信号发出的时机。(3)信号发出的先后。
2023-11-06 13:38:55
2365
原创 Qt窗体自动销毁
Qt中通过对象树的方式,实现了窗体自动析构,只要我们使用得当,就能免去自己去释放窗体对象的内存,但是我们得清楚Qt窗体自动析构的机制,什么情况下能够自动析构,什么情况不能。操作不当的情况可能造成内存泄漏,甚至会出现程序崩溃问题。下面通过一系列示例进行探究。
2023-11-06 11:27:41
660
原创 Qt 表格QTableWidget
以下是一个示例,通过实现一个QStyledItemDelegate的子类,来提供自定义的表格代理控件,然后在表格中设置该代理。最终实现的效果就是双击表格第一列的单元格都会在单元格内创建下拉框编辑控件,并且在交互完成后控件内的值会同步到表格中。如果要实现表格的不同列的编辑控件不一样,比如有的通过下拉框编辑,有的通过拨轮编辑,就可以通过在ItemDelegate的createEditor方法中去创建这些不同的控件。
2023-11-03 18:29:25
226
原创 Qt 信号与槽
先看原始的代码,目标是想实现把原有界面上的一堆控件同时也显示到另外一个表格中,因此才有创建一堆新的控件,并且将新的控件和原控件做同步,然后将新的控件放入到表格中。实现的理想效果时,操作原来的控件时,表格中的新控件得到同步;每次点击表头,表格中的所有控件将被替换为新的控件,那么原来的控件自然是要销毁掉(这里是Qt的特性,当控件从表格中删除,被销毁时,理论上它所有相关的信号--槽连接也应该被删除掉。旧的销毁掉,换成新的,不应该有问题。当点击表格的表头,使得表格中的控件被重新更新后,再去操作控件,程序崩溃。
2023-11-03 18:27:39
438
原创 Qt实验室
本系列文章是研究和记录Qt开发过程中遇到的各种问题的集合由于Qt是一个庞大的开发体系,很难用有限的文案对其做全面深入细致的讲解,因此市面上大多数Qt开发相关的教程都显得极其粗浅入门,通常只能作为最基本的入门教程。但是实际项目开发中往往会遇到很多疑难问题,翻阅这些开发教程却又找不到对应解答。实际项目的复杂度往往远高于教程上所给的一些简单demo,甚至也远比Qt Creator中自带的教学例程。所以,Qt入门简单,但是要做出很棒的软件出来,依然是非常具有挑战性的事情。纸上得来终觉浅,绝知此事要躬行。
2023-11-02 19:44:21
285
原创 Qt 窗口的尺寸
更改后会发现,当隐藏完所有的子窗体后,所有的按钮被均匀布局在了主窗体,如果想要的效果是按钮从主窗体从上往下紧密排列,可以在layout添加完所有的控件和窗口后,添加一个stretch,即在this->setCentralWidget(contentArea);第一个this->size()输出QSize(640, 480),即MainWindow具有默认的尺寸640*480。对于一个Qt的窗口(继承于QWidget),获取其窗体尺寸的方法size();而connect()方法中的三个打印对应的值则分别为。
2023-10-25 16:49:01
3757
原创 Qt C++实现Excel表格的公式计算
用Qt的QTableView+QStandardItemModel+QStyledItemDelegate实现类似Excel表格的界面,在parser 模块中提供解析表格单元格输入的公式。支持的公式计算可以深度嵌套,目前parser模块中仅提供了+-*/^运算和类似Excel的sum, power函数,其他需要的函数可以自行参考现有的设计去添加,在现有的设计下添加起来也非常容易。输入:=1+A1/2+sum(1,1,sum(A1,2,power(A1,3)))/power(A2,2)
2023-07-27 16:31:07
857
原创 Qt 无边框软件框架
本文介绍了一个基于Qt的无边框界面的设计,界面主要拆分为左中右三部分,五个窗口的设计。界面风格定义在一个qss文件内,包括颜色风格和控件响应。界面设计具有较好的完成度,可以作为一些小型项目的基础设计,拿来即用,也可作为很好的学习参考资源。
2023-06-19 09:00:00
131
原创 全网最强word报告批量自动生成软件QuickReporter!基于模板替换的word文档自动生成
word文档自动生成程序是一个根据用户提供的模板word文档以及一些必要的数据文件来渲染生成所要的word文档的工具。
2023-04-29 12:00:00
2644
原创 QGuiApplication::font(): no QGuiApplication instance and no application font set.
这个问题的出现是因为在使用matplotlib时,需要一个GUI环境,而在没有调用QGuiApplication之前调用了matplotlib,导致抛出该异常。即Class B 的 def __init__(self,fig=A()) -> None: 中的 fig=A() 对象产生于 import b 的时候。python 函数默认值如果是可变类型,那么其实例将只有一个,即无论 B()调用几次,其fig的默认值都是同一个 A()。在使用matplotlib之前,将下面的语句插入到程序中,并先执行该语句。
2023-03-24 14:34:32
625
原创 python 操作word库docx 增强接口
python docx操作word 复制段落,插入带格式的段落,插入题注,交叉引用题注,在指定文字后面插入内容
2023-03-04 21:56:45
1150
1
原创 Qt C++ 自定义仪表盘控件03
仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以拿来即用。由于源码较为精简,初次做Qt开发的伙伴们,也可以拿来源码学习学习,做一些简单的修改即可实现更多自定义的效果。参考这几个仪表盘的源码和设计,基本上可以触类旁通,实现其他的仪表盘风格。
2023-02-21 09:02:58
2940
原创 Qt C++ 自定义仪表盘控件02
仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以拿来即用。由于源码较为精简,初次做Qt开发的伙伴们,也可以拿来源码学习学习,做一些简单的修改即可实现更多自定义的效果。参考这几个仪表盘的源码和设计,基本上可以触类旁通,实现其他的仪表盘风格。
2023-02-11 15:40:37
4715
2
原创 Qt 自定义仪表盘控件
仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以拿来即用。由于源码较为精简,初次做Qt开发的伙伴们,也可以拿来源码学习学习,做一些简单的修改即可实现更多自定义的效果。参考这几个仪表盘的源码和设计,基本上可以触类旁通,实现其他的仪表盘风格。
2023-02-08 21:48:47
3387
2
原创 matlab复杂函数多元函数拟合
本文介绍了一个具有3个变量,14个参数的复杂多元函数的拟合实现,通过matlab的lsqnonlin方法实现,并分享了一些拟合的技巧心得。中间过程的脚本和数据,以及心得技巧在此分享给有需要的人,共勉链接:https://pan.baidu.com/s/1JO2DFQ5b1AP0GGtFErn19w?pwd=ptty提取码:ptty。
2023-01-05 20:53:58
18083
4
原创 Qt基于QGraphicsItem的自定义复杂图形绘制以及交互响应
简介本文介绍了 QGraphicsItem用于绘制自定义图形的使用方法,以及图形对于鼠标悬浮和点击选择时的响应实现。效果下图左右两个图形分别为鼠标未选中和选中时的效果,选中时,图形边框颜色加深,以及鼠标在三角形上悬浮时,它的颜色转换为绿色。图形可以拖动,可以响应鼠标的悬浮和单击事件。总结本文的方法可以用于Qt创建流程图程序等图形化的交互程序,实现自定义的图形绘制,与用户的交互等。 源码链接:https://pan.baidu.com/s/1_2l4HCb3RbZDgvAa3HLP_w?pwd=ptty 提
2022-12-04 17:31:01
1046
原创 Qt 之 自定义按钮 在鼠标 悬浮、按下、松开后的效果--三种实现方式
简介本文介绍了Qt中的按钮实现响应鼠标悬浮、按下、松开后的效果,在三种状态下,按钮改变不同的背景图片。方式1:通过设置setStyleSheet的方式去实现;方式2:通过继承QPushButton去实现一个自定义的按钮;方式3:在主界面中给按钮安装事件过滤器的方式去实现程序方式1:通过设置setStyleSheet的方式去实现; 方式2:通过继承QPushButton去实现一个自定义的按钮;继承QPushButton类后,重写了event()方法方式3:在主界面中给按钮安装事件过滤器的方式去实现
2022-12-03 20:43:58
7084
原创 Qt QGraphicsItem 带有子图标的图形示例
简介本文介绍了一个用Qt QGraphicsItem作为基类实现的带有子图标的图形项,子图标可以独立响应鼠标悬浮事件和鼠标点击事件,该方法可用于设计具有复杂UI响应的图标。程序目录HoverChangeButton.h/HoverChangeButton.cpp是该图形类main.cpp用于在 QGraphicsScene/ QGraphicsView中对该图标功能进行测试效果展示 以上图从左到右分别为鼠标未悬浮,鼠标悬浮,鼠标单击后的效果 总结通过继承QGraphicsItem并且重写部分鼠标响应函数,
2022-12-03 19:13:22
226
1
原创 linux网络编程-epoll多路复用
client.cpp -->clientserver.cpp -->server在server中使用epoll来进行多路复用client.cpp#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <string>#include <unistd.h>#include <net.
2021-12-04 02:28:17
862
原创 linux网络编程-多client多server一个watcher
当有多个server需要启动,或者server动态的启停,需要用一个watcher来对它们进行管理,当有client要连接到server时,先连接到watcher去查询可用的server 。(1)watcher启动后在两个线程内分别监听server的连接和client的连接(2)watcher将连接上来的server记录下来,当有client连接上来后,将可用的server的端口告知给client(3)接下来client再去连接serverV1实现了最基本的client-watche
2021-12-03 23:59:56
1406
原创 linux网络编程-多client多server一个watcher
client.cpp-->clientserver.cpp-->serverwatcher.cpp+server.h-->watcherclient.cpp#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <string>#include <unistd.h>#inclu
2021-12-03 23:49:47
364
原创 C++ 网络编程 TCP 用select实现的并发 异步
https://blog.csdn.net/xiyangxiaoguo/article/details/107179169上一篇采用的是建立新的线程的方法去处理一个新的客户端到服务器的TCP连接,对于少量的客户端连接到服务器这种方法不存在问题,这种方式带来一个问题就是,每一个链接都要开辟一个新的线程,数量少时还可以,当数量上亿时就不合适了,另外,这个很多时候这个链接也没有数据读取,那么这个线程一直运行也会浪费CPU,总之这种方式有局限性。采取的替代方法是用select实现异步非阻塞的网络连接S.
2020-07-08 17:56:15
2874
原创 C++ TCP网络编程 send 和recv分析【测试记录】
客户端程序:#include <winsock.h> #include<iostream>#pragma comment(lib,"ws2_32.lib") #include <Windows.h>#include<string>int main(){ //初始化Windows Socket Application WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData; //Win
2020-07-07 16:42:52
2262
原创 C++ TCP 客户端发送大量数据,服务器来不及接收【一次详细的测试记录及分析】
如果客户端发送数据的速度远远大于服务器接收数据的速度,那么-->客户端程序:#include <winsock.h> #include<iostream>#pragma comment(lib,"ws2_32.lib") #include <Windows.h>#include<string>int main(){ //初始化Windows Socket Application WORD sockVersion = MAK.
2020-07-07 14:42:51
4629
1
原创 C++ TCP网络编程--服务器端多线程处理会话连接
客户端程序:#include <winsock.h> #include<iostream>#pragma comment(lib,"ws2_32.lib") #include <Windows.h>#include<string>int main(){ //初始化Windows Socket Application WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData; //Wi.
2020-07-07 12:50:38
1741
原创 C++ TCP 网络编程与数据通信
服务器端:#include <winsock.h> #include<iostream>#pragma comment(lib,"ws2_32.lib") #include <Windows.h>#include <string>DWORD WINAPI ThreadTCP(LPVOID pParam);int main(){ //初始化Windows Socket Application WORD sockVersion...
2020-07-07 12:21:48
671
原创 windows下 opencv 图像 人脸检测 亲测可行
参考https://blog.csdn.net/li_wen01/article/details/78369751/*=============================================================================# FileName: facecheck.cpp# Desc: detect faces and eyes by opencv ,and then cut the face# .
2020-05-22 13:00:33
280
原创 matlab与图形骨架提取
matlab的快速实现img=imread('ces6.bmp');figureimshow(img,[]);title('原始图');%关于img:img图像中进行了二值化,非零值(白色1),零值(黑色0)%其中图像元素为非零值(白色1),图像背景为零值(黑色0)%骨架提取imgo=bwmorph(img,'skel',Inf);figureimshow(imgo,[]);title('骨架');实现的效果...
2020-05-18 10:43:23
6156
1
原创 matlab与数字图像处理--图像锐化imsharpen
在对图像进行锐化时,图像灰度变化之处将引入一段“过冲”,和人眼视觉中的马赫带效应相同。可以理解图像锐化即是增强了人眼的马赫带效应。mat=zeros(300,500);mat(:,1:100)=0.2;mat(:,101:200)=0.3;mat(:,201:300)=0.4;mat(:,301:400)=0.5;mat(:,401:500)=0.6;figureimsho...
2020-04-29 12:00:08
2441
原创 matlab与数字图像处理--闭操作筛选图像中面积大于一定值的区域(2)
参考上一篇:https://mp.csdn.net/console/editor/html/105642895这次采用matlab的库函数来进行膨胀和腐蚀,然后查找连通区域,对于每个连通区域,用红色方框框选其最大的范围。膨胀:imdilate();腐蚀:imerode();查找连通区域:bwconncomp();不多说,直接上代码%通过matlab函数实现大面积图形查...
2020-04-21 18:12:28
2210
1
原创 matlab与数字图像处理--闭操作筛选图像中面积大于一定值的区域
利用闭操作对图像进行图形元素的筛选,删除规格小于8*8的图形,保留大于8*8的图形测试用图,图像已经二值化,图像元素为白色,背景为黑色选择结构元素为8*8的矩阵,对测试图像进行闭操作的结果,尺寸小于8*8的图像元素全部为消除。%手动实现大面积图形查找img=imread('ces0.bmp');%关于img:img图像中进行了二值化,非零值(白色1),零值(...
2020-04-20 21:52:49
3079
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人