草上爬
专注技术,热爱分享
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QTextEdit之高效复制文本
本文介绍了优化QPlainTextEdit控件复制功能的方法。当处理大量文本时(如100万行),直接使用控件的copy()方法会导致界面卡顿。作者提出高效解决方案:通过textCursor().selectedText()获取选中文本,直接设置到剪贴板。但需注意换行符问题(0x2029会被替换为可见换行符'\n'),最终实现流畅无卡顿的文本复制功能。原创 2025-09-27 10:24:41 · 207 阅读 · 0 评论 -
Qt之修改纯色图片的颜色
Qt之修改纯色图片的颜色原创 2025-07-06 10:14:54 · 392 阅读 · 0 评论 -
QComboBox设置圆角下拉列表并调整下拉列表位置
QCombobox设置圆角下拉列表并调整下拉列表位置下拉列表其实在一个QFrame里面,我们用findChild找到它,并且在它弹出后,向下移动几个像素下拉列表圆角需要先设置列表背景透明和无边框,然后再在样式表里设置radius原创 2025-06-14 22:49:04 · 507 阅读 · 0 评论 -
Qt实现的水波进度条和温度进度条
本文介绍了两种Qt控件实现方法:水波动画控件和温度进度控件。水波控件通过正弦/余弦函数生成波浪曲线,采用相位偏移实现双波叠加效果,并利用定时器动态更新波浪位置。温度控件采用饼状图展示进度,通过定时器控制高亮圆点移动来指示运行状态,防止用户误判为卡顿。两者都支持自定义颜色、数值范围和边框宽度等属性,并提供了完整的类实现代码,包括绘制逻辑、动画控制和属性设置方法。原创 2025-06-02 09:20:48 · 969 阅读 · 0 评论 -
使用QCollator对QStringList排序
QCollator是一个支持语言环境的字符串排序工具,提供三种排序策略:设置大小写敏感、忽略标点符号和数字模式。在数字排序场景中,通过setNumericMode(true)可实现按数值排序(如"1"<"100")。对于混合字符串也能灵活处理,可与std::sort配合使用,支持直接传入比较器或lambda表达式两种方式。该工具能有效解决常规排序无法正确处理数字字符串的问题。原创 2025-05-24 12:14:22 · 291 阅读 · 0 评论 -
QTabWidget垂直TabBar的图标和文本水平显示
QTabWidget垂直TabBar的图标和文本水平显示原创 2025-05-24 11:09:19 · 1290 阅读 · 0 评论 -
Qt高分屏自适应
Windows 上的桌面应用程序可以在不同的 DPI 感知模式下运行。这些模式可实现不同的 DPI 缩放行为,并且可以使用不同的坐标空间。有关 DPI 感知的详细信息,请参阅。请务必显式为进程设置默认 DPI 感知模式,以避免意外行为。有两个清单设置可用于指定进程默认 DPI 感知模式:<dpiAwareness> 和 <dpiAware>。<dpiAware> 已在 Windows Vista 中引入,仅允许将进程默认设置设置为系统感知。原创 2025-03-22 22:48:21 · 1159 阅读 · 0 评论 -
QGroupBox取消勾选时不禁用子控件
QGroupBox取消勾选时不禁用子控件原创 2025-03-22 22:27:18 · 338 阅读 · 0 评论 -
QListView实现文件选择功能
QList实现的文件选择功能很常用,但是最高效的做法是先让左侧的源列表默认排序,然后再进行文件选择,这样在选择操作后,无论是源列表还是目标列表,都能很容易保证原来的顺序。原创 2025-02-23 21:14:19 · 375 阅读 · 0 评论 -
QListView大幅提升数据加载性能
QListView设置uniformItemSizes属性后,数据瞬间就能加载完成。这个属性默认为false,当设置为ture时,会假设QListView中的Item具有相同的尺寸,这样的话,渲染的时候就不会去计算每个Item的大小,从而大幅提升数据加载性能。原创 2017-09-12 21:38:46 · 3670 阅读 · 0 评论 -
QTableView只有一列,显示水平滚动条
默认情况下,当QTableView只有一列时,是不会显示水平滚动条的,如下图所示:但可以通过设置QTableView的属性,使得文本宽度超出QTableView控件宽度时,出现水平滚动条。原创 2017-11-21 10:03:10 · 17872 阅读 · 0 评论 -
Qt之圆角菜单
首先要去掉菜单的边框和阴影,然后就是用样式表了设置圆角等样式了。原创 2016-12-22 19:07:20 · 23256 阅读 · 0 评论 -
QTreeView添加网格线
网格线虽然可以用样式表添加,但效果不好。这里重写QTreeView的drawRow函数来实现网格线的绘制需要注意的是,当我们对QTableView/QTreeView/QTableWidget/QTreeWidget某行选中后,会发现某些单元格设置的前景色被覆盖了,比如设置的红色,一旦选中就变成了白色(如下图所示)。这肯定不是我们想要的,需要用自定义委托将其去掉。原创 2025-02-13 22:52:09 · 855 阅读 · 0 评论 -
QTreeView支持选中整行
默认情况下,树最左侧的展开按钮是无法选中的。下面使用stylesheet来实现整行悬浮(hover)和选中(selected),并修改悬浮和选中时的背景色。原创 2016-10-20 15:02:34 · 4164 阅读 · 0 评论 -
QTreeView和QTableView单元格添加超链接
QTreeView和QTableView单元格添加超链接的方法类似,本文仅以QTreeView为例。在QTableView仿Excel表头排序和筛选中已经实现了超链接的添加,但是需要借助delegate,这里介绍一种更简单的方式,无需借助delegate。二.实现QHTreeView.hQHTreeView.cppMainWIndow.cpp在QHTreeView中通过带下划线的文本来模拟超链接,当鼠标悬浮在带下划线的文本上时,鼠标指针变为小手形状,在鼠标点击时触发超链接。这种方法的缺点原创 2025-02-09 22:35:08 · 621 阅读 · 0 评论 -
QTreeView和QTableView设置单元格边距
QTreeView和QTableView设置单元格边距原创 2024-07-14 19:59:43 · 1460 阅读 · 0 评论 -
QTableView冻结多列
要实现列冻结,也就是说在拖动水平滚动条的时候,第一列永远显示在窗口上。怎么做到这个效果呢?这个例子给的解决办法很简单,我们只需要把两个视图叠加在一起,上层这个视图只显示第一列,下层的视图是全显示,然后拖动时候我们只需要正常拖动下层视图,上层视图联动即可。可用通过tableView->setFreezeColumns(2);设置要冻结的列数,谁然只是多冻结了几列,还是有许多工作要做的,千万不要对产品的需求轻易说Yes。下面稍作修改,让其支持冻结多列。原创 2025-02-09 11:29:30 · 816 阅读 · 0 评论 -
Qt之设置QToolBar上的按钮样式
通常给QAction设置icon后,菜单栏的菜单项和工具栏(QToolBar)上对应的按钮会同时显示该icon。这里使用ToolButtonTextUnderIcon,效果如下所示:工具栏按钮会自适应文本宽度,这样会导致两个按钮不一样大,那么如何将按钮设置成一样大呢,并自定义悬浮和点击的背景色?原创 2025-02-07 23:07:37 · 1076 阅读 · 1 评论 -
Qt5.15.2静态编译 MinGW with static OpenSSL
Qt5.15.2静态编译 MinGW with static OpenSSL原创 2024-10-10 01:26:08 · 1815 阅读 · 0 评论 -
Qt之TCP收发图片的例子
Qt之TCP收发图片的例子原创 2024-10-06 17:35:31 · 1882 阅读 · 0 评论 -
Qt之开机自启动
Qt之开机启动,支持设置开机启动和取消开机启动原创 2024-09-25 08:04:30 · 1706 阅读 · 0 评论 -
QTextEidt或QPlainTextEdit高亮光标所在行
QTextEidt或QPlainTextEdit高亮光标所在行。原创 2024-07-19 00:02:38 · 1225 阅读 · 1 评论 -
Qt之使用QPrinter导出PDF
Qt之使用QPrinter导出PDF,如果要新建一页,可以调用bool QPrinter::newPage(),使用QPrinter导出的PDF有个很明显的缺点:没有书签,如果PDF页数较多,这种方式其实是不太行的。原创 2018-03-13 17:47:16 · 30046 阅读 · 1 评论 -
QListView启用水平流式布局
QListView启用水平流式布局原创 2018-04-28 13:55:56 · 13817 阅读 · 0 评论 -
QTreeView第一列自适应
通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第一列的宽度能自动缩放,第二列和第三列的宽度保存不变,而且要支持鼠标拖动调整列宽。原创 2024-06-30 07:25:01 · 1951 阅读 · 0 评论 -
QListView、QTableView或QTreeView截取滚动区域(截长图)
QListView、QTableView或QTreeView截取滚动区域(截长图)本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。原创 2024-06-23 17:59:03 · 1523 阅读 · 1 评论 -
QTreeView双击任意列展开
重点是如何通过其他列的QModelIndex(假设为index),获取第一列的QModelIndex(假设为firstColumnIndex)。这里要注意index函数的第三个参数,第三个参数为父index,因为通过在tree中仅通过row和column无法确定目标index。下面是一个只有一列的tree,注释中为每行的row和column此时,model->index(0, 0);只会定位到node0,而不是node1-0、 node2-0或node2-1-0。原创 2024-06-23 14:52:46 · 1587 阅读 · 0 评论 -
Qt开发经验总结
增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理。把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能。把一些Qt5中兼容Qt4的方法废弃了,必须用Qt5中对应的新的函数。跟随时代脚步,增加了不少新特性以满足日益增长的客户需求。对某些模块和类型及处理进行了革命性的重写,运行效率提高不少。有参数类型的变化,比如 long * 到 qintptr * 等,更加适应后续的拓展以及同时对32 64位不同系统的兼容。原创 2016-12-02 11:46:22 · 13999 阅读 · 2 评论 -
Qt之使用Qt内置图标
Qt内置图标封装在QStyle中,共七十多个图标,可以直接拿来用,能应付不少简单程序需求,不用自己去找图标并添加到资源文件了。下面是内置图标的枚举定义:QStyle提供了QIcon standardIcon()函数用于将内置图标转换为QIcon,同时提供了QPixmap standardPixmap()函数用于将内置图标转换为QPixmap。这两个函数的第一个参数都是上面贴出的枚举值。原创 2024-02-04 20:10:19 · 7472 阅读 · 97 评论 -
分享一个QML实现的电池充电效果(超级炸裂)
分享一个QML实现的电池充电效果(超级炸裂)原创 2018-04-04 14:55:50 · 5873 阅读 · 1 评论 -
Qt之有趣的数字钟
Qt之有趣的数字钟:基于网络代码修改,支持时、分、秒;支持滑动、翻页和旋转。原创 2024-01-09 08:30:23 · 3102 阅读 · 55 评论 -
用Qt开发的十大理由
用Qt开发的十大理由原创 2018-01-16 16:57:00 · 17617 阅读 · 0 评论 -
Qt实现的颜色生成器
有些时候我们需要为一些对象附上随机的颜色,比如我们有这么一个需求,用QCustomPlot绘制曲线,刚开始曲线的颜色默认都是黑色的很不好看,后来为了显示的美观我们想给添加的曲线随机的附上颜色,但是有一个要求,曲线的颜色不能太淡,比如不能是白色。因为图像的背景颜色是白色的,如果曲线也是白色那曲线就会看不到了。这样可以实现我们对随机颜色的要求,但是不满足我们不能为白色的要求,为了避免白色,我们在对这个颜色进行检查,如果r、g、b分量的值都超过230,表示颜色太淡重新随机,但是这样的方法总让人感觉不那么舒服。原创 2018-03-13 17:43:51 · 2394 阅读 · 2 评论 -
Qt之设置QLabel的背景色和前景色
Qt之设置QLabel的背景色和前景色:方法有两种,一种是使用调色板,一种是使用样式表。原创 2024-01-03 18:21:09 · 9159 阅读 · 40 评论 -
Qt之QPainter绘制浪漫星空(快来许愿吧)
前几天发现几篇关于Python的博文,里面不是放烟花(Python烟花秀),就是献爱心(Python跳动的爱心)。以前学Python的时候的时候关于它的简介还是这样的:Python是一种高级编程语言,可以应用于爬虫、大数据、人工智能等方面。没想到Python在GUI方面也这么强大,好在Qt也不怂,,效果不逞多让。还有一篇,感觉不错,用QPainter复刻了一下,代码量和Python版本差不多。原创 2024-01-03 00:04:24 · 3336 阅读 · 15 评论 -
Qt之自定义分页(翻页)控件
Qt之自定义分页(翻页)控件:当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。原创 2023-12-27 22:17:04 · 3370 阅读 · 2 评论 -
QML粒子系统酷炫效果合集(不定时更新)
QML粒子系统酷炫效果合集:1.烟花效果;2.文字灰飞烟灭效果原创 2018-04-02 17:57:11 · 7621 阅读 · 1 评论 -
QML实现的毛玻璃效果
QML实现的毛玻璃效果原创 2018-03-08 15:10:10 · 3466 阅读 · 1 评论 -
Qt 性能优化之一:选择合适的视频渲染方案
Qt 性能优化之一:选择合适的视频渲染方案原创 2016-11-04 19:08:48 · 3358 阅读 · 1 评论 -
Qt之判断一个点是否在多边形内部(射线法)
以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。其次,对多边形的顶点和射线相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略该点;最后,对于Q在多边形边上的情形,直接可以判断Q属于多边形。在图A中,射线与多边形的顶点相交,这时交点只能计算一个;在图B中,射线与多边形顶点的交点不应被计算;在图C中,射线与多边形的一条边重合,这条边应该被忽略不计。为了统一起见,射线可设定为水平向右,设点P的纵坐标与Q相同,P的横坐标为一大的整数,则可用QP代替射线。原创 2023-12-20 02:06:10 · 3530 阅读 · 0 评论
分享