Qt
文章平均质量分 80
lw向北.
小有名气的老王,小到只有我自己知道(有问题可私,已读必回,代码中注释超详细,需要源码可私聊)
展开
-
Qt之QPainter实现画笔功能(逻辑简单,不懂算我输 含源码+注释)
通过QPainterPath实现画笔功能,基本逻辑与绘制多个矩形/圆形一致,同样逻辑简单,适合练手。原创 2023-03-16 00:00:00 · 1315 阅读 · 11 评论 -
Qt之QPainter绘制多个矩形/圆形(含源码+注释)
文章较简单,练手即可,下章为QPainter实现画笔功能。友情提示——哪里看不懂可私哦,让我们一起互相进步吧o/)注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。注:如有侵权,请联系作者删除。原创 2023-03-13 23:45:43 · 5105 阅读 · 0 评论 -
Qt之QTableView自定义排序/过滤(QSortFilterProxyModel实现,含源码+注释)
自定义排序和过滤比较简单,但是在项目中非常实用,如需要将某行/列置顶,特殊条件过滤等。原创 2023-02-28 00:10:57 · 3583 阅读 · 2 评论 -
Qt之QDrag的使用(含源码+注释)
拖拽事件在实际生活中非常实用,除了普通的操作以外,还可以通过不同数据分辨实现不同的操作。友情提示——哪里看不懂可私哦,让我们一起互相进步吧注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。注:如有侵权,请联系作者删除。原创 2023-01-14 23:11:40 · 5590 阅读 · 0 评论 -
Qt之线程运行指定函数(含源码+注释,优化速率)
总所周知,当程序运行卡顿,速率不理想时,可通过线程提高运行速率;本文提到的三种方式在想要提高速率的情况时还是蛮有用的,当然具体使用那种方式还得看实际情况。原创 2023-01-01 02:33:40 · 6794 阅读 · 0 评论 -
Qt之天气预报——界面优化篇(含源码+注释)
界面优化主要提供给用户使用,养眼的样式会给用户提供良好的体验。同时,做界面优化篇我还体验到UI的重要性,一个好的UI设计会带来许多便利。有需要的小伙伴可私聊取源码。原创 2022-12-18 01:09:17 · 6735 阅读 · 8 评论 -
Qt之天气预报——功能实现篇(含源码+注释)
天气预报包含实时天气模式和预报天气模式。添加右键菜单;可切换天气模式;显示天气报告时间;刷新功能(右键菜单);城市选择模式:包括下拉框选择和文本框输入(右键菜单);切换城市更新天气预报信息,显示报告时间、城市、温度等常用信息。实时天气模式功能比较单一,仅显示当天的天气基本信息。预报天气包含四天的天气信息(包括当天天气),默认显示当天天气信息;可通过自定义按钮对象切换天气信息,且预报天气下方为预报日期日、夜间温度的折线图。下图通过下拉列表框切换城市从而自动查询天气,其中包括实时天气和预报天气。原创 2022-12-02 01:09:03 · 6476 阅读 · 11 评论 -
Qt之天气预报——预备篇
高德开放平台API Key的创建与使用高德开放平台控制台的创建与使用高德开放平台天气预报的创建与使用原创 2022-11-18 00:50:39 · 6305 阅读 · 0 评论 -
Qt之QCompleter的简单使用(自动补全、文本框提示、下拉框提示含源码+注释)
自动补全文本框提示补全类补全功能提示功能下图演示了匹配开头模式,可以看到匹配开头时,输入”王“只显示了”王五“,但当匹配包含时却显示了两个项。从下图可以看到匹配包含时,输入”张“显示了”张三“和”小张“,但当匹配结尾时却显示了”小张“,以此演示了匹配结尾的功能原创 2022-10-01 00:10:57 · 5556 阅读 · 0 评论 -
Qt之语言家的简单使用(二)(使用注意事项)
本文总结了Qt国际化tr函数和对话框按钮的翻译,后续有其他新发现将持续更新。原创 2022-09-20 01:09:20 · 1909 阅读 · 0 评论 -
Qt之语言家的简单使用(一)(Qt翻译UI,Qt Linguist的使用,含源码+注释)
Qt Linguist的使用;Qt QDialogButtonBox 英文翻译问题;Qt ts文件生成;Qt qm文件生成;Qt国际化原创 2022-08-29 00:20:09 · 6805 阅读 · 2 评论 -
Qt之数据序列化(结构体序列化,类序列化,含源码+注释)
下图包含常用类型、复杂容器、结构体、类对象的序列化和反序列化值演示。提示:不会使用Qt设计师设计界面的小伙伴点击这里其中序列化和反序列化简单的操作流程如下基本上所有序列化、反序列化流程都是如此,记住这个顺序最好反序列化(用源码中整形举例)SerializeType.h头文件讲解该头文件中包含学生信息结构体和学生信息类,咋一看两者内容都一样,其实是真的一样;这样是为了表达说结构体和类中序列化、反序列化操作超级像,了解一个相当于了解第二个CSerializeWindow.hCSerial原创 2022-08-18 00:36:27 · 6668 阅读 · 4 评论 -
Qt之QtDataVisualization各三维图表的简单使用(含源码+注释)
三维柱状图三维散点图三维曲面图设置视角水平视角垂直视角设置主题样式设置系列样式二维显示槽函数的添加using namespace QtDataVisualization;datavisualizationQ3DBars QBar3DSeries QBarDataArrayQ3DScatter QScatter3DSeries QScatterDataArrayQ3DSurface QSurface3DSeries QSurfaceDataArray......原创 2022-08-11 00:58:29 · 11040 阅读 · 19 评论 -
Qt之QChart各个图表的简单使用(含源码+注释)
QChart各个图表的创建ui中添加/移除动态属性操作按钮组的使用(按钮组链接槽函数)信号槽链接原创 2022-07-24 00:24:06 · 9757 阅读 · 19 评论 -
Qt之QComboBox添加QCheckBox(下拉列表框插入复选框,含源码+注释)
下图为带复选框的下拉列表框示例图,其中包含添加项,选中项,勾选复选框等操作。提示:不会使用Qt设计师设计界面的小伙伴点击这里ComboBoxTest.cpp总结在本文on_comboBox_currentIndexChanged获取到了复选框对象,可以在这里做出复选框应有的判断,或者在创建复选框时连接槽函数等操作;具体详解都在注释中,有意者细读哦😊。友情提示——哪里看不懂可私哦,让我们一起互相进步吧(创作不易,请留下一个免费的赞叭 谢谢 ^o^/)注:文章为作者编程过程中所遇到的问题和总结,.原创 2022-07-01 22:14:30 · 6954 阅读 · 13 评论 -
Qt之QListView的简单使用(含源码+注释)
下图为节点添加删除示例图;源码在本文第三节(源码含详细注释)。下图为节点对节点值的操作,其中包含获取值、设置值等;源码在本文第三节(源码含详细注释)。提示:不会使用Qt设计师设计界面的小伙伴点击这里同样我们将QListView和QTableView、QTreeView做对比CMainWindow.cpp总结QListView目前在我实际应用中是比较少的,所以用多了其他两个View突然使用QListView会有一点不习惯,最主要是因为QListView和其他其他两个View使用的数据模型对象不同原创 2022-06-29 23:23:42 · 9629 阅读 · 1 评论 -
Qt之QTreeView的简单使用(含源码+注释)
下图为节点添加删除示例图,其中包含添加顶级节点、添加子节点、移除节点等操作;源码在本文第三节(源码含详细注释)。下图为节点对节点值的操作,其中包含获取值、设置值等;源码在本文第三节(源码含详细注释)。这里我们将QTreeView和QTableView对比一下CMainWindow.cpp四、拓展:上级节点的获取与判断本文对于节点的判断是通过data设置用户定义值操作的,还有一种方法,是通过获取当前位置的QModelIndex对象获取其父对象的QModelIndex判断,代码如下(下方代码仅适用于原创 2022-06-12 19:38:32 · 16287 阅读 · 13 评论 -
Qt之QSortFilterProxyModel的简单使用(QTableView搜索功能,含源码+注释)
过滤器的简单使用、QTableView搜索功能、过滤器获取item指针、过滤器获取当前item文本原创 2022-06-04 22:28:05 · 4229 阅读 · 11 评论 -
Qt之QTableView设置多列表头复选框(自定义QHeaderView)、单元格复选框(含源码+注释)
下图为已设置好复选框的示例图,其中包含表头复选框和单元格复选框,源码在本文第三节(源码含详细注释)。提示:不会使用Qt设计师设计界面的小伙伴点击这里CHeaderView.cpp3.2 CMainWindow(主界面类)CMainWindow.hCMainWindow.cpp总结本文代码其实还缺少许多判断,如当获取的item为空、当所设置列已存在等情况的判断需要注意一下,其次是本文代码仅在表头复选框所在的表头单元格点击也可触发选中;并且在博主查阅相关文档时发现,大多数文章都重写了鼠标事原创 2022-05-29 19:36:23 · 11520 阅读 · 21 评论 -
Qt之QTableView的简单使用(含源码+注释)
一、QTableView操作示例图下图为QTableView简单使用示例图,其中包含设置、获取、新建item等操作,源码在本文第三节(源码含详细注释)。提示:不会使用Qt设计师设计界面的小伙伴点击这里二、QTableView(个人理解)QTableView是类似MVC(Model View Controller)模式,但在这里的Controller变成了Delegate;使用QTableView显示数据需要配合QStandardItemModel,但是其子类QTableWidget则不需要,但原创 2022-05-28 23:30:00 · 9963 阅读 · 0 评论 -
Qt数据库练习之QSqlRelationalTableModel的使用(MySql数据库示例,含源码+注释)
一、操作示例1.1 源数据表图片EmployeeInfo(员工信息表):PositionInfo(职位信息表):1.2 关系字段操作示例下图为关系字段操作示例图,其中双击职位列某行后,会弹出代理控件,供用户选择(在本文中控件失去焦点则修改数据)。提示:示例图中开始先刷新了数据表,表明数据为最新数据;源码在本文第三节(源码含详细注释)。提示:不会使用Qt设计师设计界面的小伙伴点击这里二、了解QSqlRelationalTableModel因为是sql操作,所以需要在pro文件添加“Q原创 2022-05-08 23:24:05 · 2233 阅读 · 0 评论 -
Qt数据库练习之QSqlTableModel的使用(MySql数据库示例,含源码+注释)
一、各操作示例提示:示例图中开始都先刷新了数据表,表明数据为最新数据;源码在本文第三节(源码含详细注释)。1.1 修改记录(数据)下图含手动更新记录和自动更新记录时的记录修改操作,其中前十秒是自动更新记录的操作,后十秒为手动更新记录的操作。1.2 添加记录(数据)下图为添加记录的操作,新添加的记录行的行标题是‘*’符号,并且当更新策略为手动更新时,需要手动保存记录。1.3 删除记录(数据)下图为删除记录的操作,删除后行的行标题变为‘!’,并且删除操作不区分自动/手动提交记录,无论怎样都是自原创 2022-05-04 19:13:44 · 6432 阅读 · 19 评论 -
Qt数据库练习之QSqlQuery、QSqlQueryModel的简单使用(含源码+注释)
一、QSqlQueryModel示例图下图上半部分为QSqlQueryModel设置到QTableView样子,下半部分为QSqlQuery查询获取到的示例图,因为QSqlQueryModel在QSqlQuery之前调用,所以没有id为003的人还是显示28;源码在本文第三节(源码含详细注释)。二、QSqlQuery、QSqlQueryModel的简单理解QSqlQuery能执行任何SQL语句(包括增、删、查、改),并且该类还封装了许多用于运行、判断、取值的函数,提高了SQL操作的效率,之前的SQ原创 2022-05-03 23:04:24 · 4598 阅读 · 2 评论 -
Qt数据库练习之Qt SQLITE的使用(从无到有,含源码+注释)
一、操作示例提示:查询所有记录和条件查询在操作中有,就不单独示例了;源码在本文第三节(源码含详细注释)。1.1 创建数据表下图为创建数据表的操作,其步骤分为:确保当前没有数据表创建数据表查看数据表是否创建成功查看初始化数据是否成功1.2 添加记录(数据)下图为添加记录的操作,其步骤分为:查看学生信息表当前内容添加学生信息使用条件查询查询添加的记录(若有则添加成功)二、了解SQLITE因为是sql操作,所以需要在pro文件添加“QT += sql”;SQLITE是一原创 2022-05-01 22:09:49 · 2667 阅读 · 0 评论 -
Qt创建右键菜单的两种通用方法(QTableView实现右键菜单,含源码+注释)
一、右键菜单(方法1+方法2)的示例下图为两种右键菜单实现的示例图,源码在本文第三节(源码含详细注释)。二、右键菜单实现的两种方法及其区别(个人理解)方法1该方法是触发contextMenuEvent事件来实现右键菜单,只需在该事件函数中写入对应的右键菜单代码即可。方法2该方法是通过控件发出的customContextMenuRequested信号触发对应的槽函数实现,同样需要添加对应的右键菜单代码。方法区分:当在函数中并未使用setContextMenuPolicy函数设置对应值时,右键原创 2022-04-27 20:14:11 · 10585 阅读 · 2 评论 -
Qt读写XML文件(含源码+注释)
一、示例XML文件内容下方为本文所使用的xml文件的内容<?xml version="1.0" encoding="UTF-8"?><root> <childNode1 attruKey="attriVal">childNode1 Val</childNode1> <childNode2 attruKey="attriVal"> <cChildNode1 shuxing1="1">cChildNod原创 2022-04-21 23:11:35 · 9766 阅读 · 2 评论 -
Qt读写ini文件(含源码+注释)
一、示例Ini文件内容下方为本文所使用的ini文件的内容[group1]key1=val1key2=val2sameKay=sameVal[group2]jian1=zhi1jian2=zhi2sameKay=sameZhi二、Ini文件的写入ini文件不需要像xml和json一样需要使用QFile打开文件,只需将文件路径及文件格式传入即可(下方代码运行完毕,ini文件则会更新,若文件不存在,会自动创建) //创建QSettings对象并指定ini文件路径并将格式设置为in原创 2022-04-17 22:18:31 · 11211 阅读 · 5 评论 -
Qt写入Json文件(含源码+注释)
一、示例Json文件内容下方为本文所使用的Json文件的内容,其中包含字符串、数值、布尔、null、对象、数组等(写入方式在本文第三节){ "array": [ "str", 88, null ], "bool": true, "jChildObj": { "age": 25, "name": "tom" }, "null": null, "number": 66,原创 2022-04-16 21:34:07 · 4683 阅读 · 0 评论 -
Qt读取Json文件(含源码+注释)
一、示例Json文件内容下方为本文所使用的Json文件的内容,其中包含字符串、数值、布尔、null、对象、数组、组合类型等(读取方式在本文第三节){ "str": "strVal", "number": 88, "bool": true, "null": null, "object": { "key1": "Val1", "key2": "Val2", "key3": "Val3" }, "array": [ "elem1", "elem2", "elem3",原创 2022-04-15 23:03:21 · 10845 阅读 · 4 评论 -
Qt设置右键菜单无效(customContextMenuRequested触发)
问题描述想使用customContextMenuRequested信号触发槽函数,发现没有效果例如:槽函数代码如下void CMainWindow::on_tableView_customContextMenuRequested(const QPoint &pos){ Q_UNUSED(pos); QMenu menu; //创建一个QMenu对象 //给menu添加三个选项 menu.addAction("选项一"); menu.addAction原创 2022-03-31 22:33:12 · 8410 阅读 · 7 评论 -
Qt读写锁(QWriteLocker、QReadLocker)的理解和使用(含部分源码)
一、QReadWriteLock和QWriteLocker、QReadLocker的关系(个人理解)配合使用QWriteLocker和QReadLocker相对于单纯使用QReadWriteLock会更方便(如同QMutex和QMutexLocker的理解)原创 2022-03-30 22:30:45 · 4606 阅读 · 0 评论 -
Qt读写锁(QReadWriteLock)的使用、读写锁的验证(含源码+注释)
一、读写锁验证示例图下图为Qt读写锁的演示及验证,在下图中可以看出两个读取数据的函数会一起调用,且数据操函数并不会调用;而当数据操作函数调用时,两个数据读取函数也不会调用。由此可知,当读取锁开启时,写入锁不能进入,反之亦然。源码在本文第三节(源码含详细注释)。二、读写锁、QReadWriteLock(个人理解)当有多个线程使用同一块数据且其中部分线程不会对数据做出改变时(多个线程使用同一个锁)。如果使用QMutex实现,同一时间,只能有一个线程可以运行,这样的话会影响效率。理论上说,那部分不会对数原创 2022-03-29 22:14:34 · 8305 阅读 · 2 评论 -
Qt代理的实现(按钮篇,含源码+注释)
QT代理的自我理解QT代理在是QT为了在View中插入控件(至少有其中一作用是这样的),如当QTableView实现翻页功能时能利索的翻页,且使用该控件操作所在行而存在的。QT代理的使用方法在使用类中实例化代理对象使用代理对象的父对象的setItemDelegateForRow/setItemDelegateForColumn设置代理的行/列使用connect关联相应的信号和槽按钮代理实现方法按钮代理不同于其他控件代理,按钮代理只需要实现点击操作即可,因此我在按钮代理中只实现了paint函原创 2021-12-05 22:36:28 · 6833 阅读 · 16 评论 -
Qt重新加载内存中的QSS样式
什么叫重新加载内存中的QSS样式当QSS被封装到QSS文件时,需要使用这个QSS,需要将其读出来;理论上说,读出来后,其在程序结束之前应该就一直保存在内存中;当我们给控件设置一个动态属性,在该QSS中存在不同属性,不同样式的时候,在程序运行中已经加载的样式不会重新加载那么当我们需要重新加载该QSS时,除了再次打开文件加载还有其他方式解决方法Qt中继承QWidget的控件存在一个获取QStyle指针的函数style(),该函数返回的指针对象包含unpolish(QWidget *widget) 和原创 2021-12-10 15:23:04 · 1575 阅读 · 0 评论 -
解决QObject::connect: invalid null parameter情况
我这种情况遇到的问题很简单,就是因为指针指向为空,通俗的说就是指针没指向对象为什么出现这种情况1.指针new的对象在其connect之后2.指针并未new出对象注:本文仅为作者编程过程中所遇到的问题和总结,并非代表绝对正确,若有错误欢迎指出。注:如有侵权,联系作者删除...原创 2021-12-09 15:05:28 · 8862 阅读 · 0 评论 -
QDomNode/QDomElement的setNodeValue()无法成功设置节点值
问题描述:在写入xml文件时使用setNodeValue()设置节点值,然后打开文件会发现文件中节点值未写进去解决方案:在QDomDocument中有一个createTextNode()函数,其返回值为QDomText对象,要在节点中添加值就需要该对象,使用appendChild添加到节点中例:当需要给某一节点添加节点值时,如下所示QDomDocument domDoc;//创建元素并设置元素值QDomElement element = domDoc.createElement(element原创 2021-12-12 20:49:59 · 2370 阅读 · 0 评论 -
Qt代理的实现(常规控件篇,含源码+注释)
常规控件解释(个人理解)这类控件主要有如下操作:创建对应的对象指针并返回获取包含代理的item值,并将其设置到控件上获取控件的值,并将其设置到相应的item上设置控件的显示位置这种类型的控件代表主要有输入框、日期/时间框、进度条、轮选框等需要实现的类及其内容//1.创建相应的控件指针并返回。(每次双击包含代理的item就会调用一次此函数)QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &opti原创 2021-12-26 22:35:49 · 3719 阅读 · 14 评论 -
Qt Graphics系列之QGraphicsObject自定义图元
自定义图元需要自定义图元类且继承QGraphicsObject自定义类中需要实现如下两个函数(由于)//绘制函数,在该函数中绘制自定义图元,该函数在窗口变化时调用(窗口大小改变、窗口最大化、最小化,还原时调用)void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);//参数解释//painter:画家对象,使用该对象绘制需要绘制的图形,当需要绘制多种图案时,直接在使用该变量绘原创 2022-01-02 23:49:35 · 1720 阅读 · 0 评论 -
Qt小游戏之数字华容道(百行代码搭雏形,可玩;含源码+注释)
一、相信大家都知道华容道吧,这次做个数字华容道,样图如下该游戏初始化如下所示:下图为游戏通关的样图:二、废话少说直接上代码1、首先是代码文件分析我的项目中包含内容如下所示:其中CLabel.h、CLabel.cpp为继承QLabel的自定义类(在我的代码中使用的是Label作为文本显示的容器,因Label没有点击事件所以需要继承QLabel类自定义点击信号);然后CMainWindow.h、CMainWindow.cpp为调用CLabel的文件(具体看实现代码);ui文件中没有东西;mai原创 2022-01-16 21:52:02 · 9650 阅读 · 42 评论 -
Qt在创建对象时,指定父对象的好处
在创建对象时指定其父对象,其父对象会将其子对象的指针保存,在父对象析构时,会一起将已保存的子对象指针一起析构掉(建议去看一下Qt的对象树模型)。不过在析构的过程中需要注意的是,别给普通对象指定父对象,当释放父对象时,包含栈内存中的对象时,会导致程序错误(栈内存的对象不能被delete)。...原创 2022-01-16 21:56:55 · 1316 阅读 · 0 评论