HDF5文件浏览软件--H5View H5View是一款轻量级桌面软件,旨在提供用户友好的界面以读取和展示 HDF5 文件中的数据结构。该软件允许用户查看文件的数据目录和数据集,并支持将选定的数据集导出为多种格式。
Qt 自定义event 在某些情况下,可能需要通过事件携带一些额外的数据可以通过自定义事件类来完成一种实现方法是自定义一个QObject的子类,通过property来携带数据Q_OBJECTpublic:这里通过一个自定义的窗口来发送自定义的事件,通过 QApplication::sendEvent(parent,evn);将事件传递给它的父窗口//sendEvent阻塞式发送信号//发出去的信号需要接收者通过event()进行处理});
Qt QTableWidget表格的宽度 通过setStretchLastSection可以将表格最后一列设置始终填满父窗口,这样当父窗口更改尺寸时,最后一列会动态更改宽度。这种情况可以友好应对某些列数据固定很短,有些列数据长度变化,而且可能较长。使得第0,2列宽度固定,第1,3列宽度可以伸缩。其中resize mode总共有如下几种设置。填充满父窗口,可以通过设置。
Qt Creator插件 这里以Qt Creator 4.15.2版本的源码为示例进行分析源码结构如下,为了追溯其插件加载过程,从main.cpp入手Qt Creator的插件目录,生成的插件,好几十个呢。
QComboBox的信号 而且下拉框的setCurrentIndex()方法设置一个当前正处于的序号是不会发出currentIndexChanged信号的。QComboBox::activated信号发射在用户打开选择了选项后,即便选项与当前选项一致,也会发射该信号。这两个信号的发射顺序为,先QComboBox::currentIndexChanged。这里会有下拉框1改变导致下拉框2改变,下拉框2改变再导致下拉框1改变的死循环吗?不会造成死循环的原因在于两个下拉框的下拉项数码一致,而且每次关联后的序号也一致。
QTableWidget单元格相关信号 (1)主要有 cellChanged,cellActivated,cellClicked,cellDoubleClicked,cellEntered,cellPressed以及相应的item类信号。通过一段代码详细说明QTableWidget的单元格被点击(包括单击和双击)以及内容被编辑时,发出的相关信号。通过以下代码,详尽地探索了,点击一个单元格,到点击另外一个单元格之间,到底Qt背后做了哪些事情。(2)各个信号发出的时机。(3)信号发出的先后。
Qt窗体自动销毁 Qt中通过对象树的方式,实现了窗体自动析构,只要我们使用得当,就能免去自己去释放窗体对象的内存,但是我们得清楚Qt窗体自动析构的机制,什么情况下能够自动析构,什么情况不能。操作不当的情况可能造成内存泄漏,甚至会出现程序崩溃问题。下面通过一系列示例进行探究。
Qt 表格QTableWidget 以下是一个示例,通过实现一个QStyledItemDelegate的子类,来提供自定义的表格代理控件,然后在表格中设置该代理。最终实现的效果就是双击表格第一列的单元格都会在单元格内创建下拉框编辑控件,并且在交互完成后控件内的值会同步到表格中。如果要实现表格的不同列的编辑控件不一样,比如有的通过下拉框编辑,有的通过拨轮编辑,就可以通过在ItemDelegate的createEditor方法中去创建这些不同的控件。
Qt 信号与槽 先看原始的代码,目标是想实现把原有界面上的一堆控件同时也显示到另外一个表格中,因此才有创建一堆新的控件,并且将新的控件和原控件做同步,然后将新的控件放入到表格中。实现的理想效果时,操作原来的控件时,表格中的新控件得到同步;每次点击表头,表格中的所有控件将被替换为新的控件,那么原来的控件自然是要销毁掉(这里是Qt的特性,当控件从表格中删除,被销毁时,理论上它所有相关的信号--槽连接也应该被删除掉。旧的销毁掉,换成新的,不应该有问题。当点击表格的表头,使得表格中的控件被重新更新后,再去操作控件,程序崩溃。
Qt实验室 本系列文章是研究和记录Qt开发过程中遇到的各种问题的集合由于Qt是一个庞大的开发体系,很难用有限的文案对其做全面深入细致的讲解,因此市面上大多数Qt开发相关的教程都显得极其粗浅入门,通常只能作为最基本的入门教程。但是实际项目开发中往往会遇到很多疑难问题,翻阅这些开发教程却又找不到对应解答。实际项目的复杂度往往远高于教程上所给的一些简单demo,甚至也远比Qt Creator中自带的教学例程。所以,Qt入门简单,但是要做出很棒的软件出来,依然是非常具有挑战性的事情。纸上得来终觉浅,绝知此事要躬行。
Qt 窗口的尺寸 更改后会发现,当隐藏完所有的子窗体后,所有的按钮被均匀布局在了主窗体,如果想要的效果是按钮从主窗体从上往下紧密排列,可以在layout添加完所有的控件和窗口后,添加一个stretch,即在this->setCentralWidget(contentArea);第一个this->size()输出QSize(640, 480),即MainWindow具有默认的尺寸640*480。对于一个Qt的窗口(继承于QWidget),获取其窗体尺寸的方法size();而connect()方法中的三个打印对应的值则分别为。
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)
Qt 无边框软件框架 本文介绍了一个基于Qt的无边框界面的设计,界面主要拆分为左中右三部分,五个窗口的设计。界面风格定义在一个qss文件内,包括颜色风格和控件响应。界面设计具有较好的完成度,可以作为一些小型项目的基础设计,拿来即用,也可作为很好的学习参考资源。
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之前,将下面的语句插入到程序中,并先执行该语句。
Qt C++ 自定义仪表盘控件03 仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以拿来即用。由于源码较为精简,初次做Qt开发的伙伴们,也可以拿来源码学习学习,做一些简单的修改即可实现更多自定义的效果。参考这几个仪表盘的源码和设计,基本上可以触类旁通,实现其他的仪表盘风格。