Qt常见问题
文章平均质量分 74
KumaNPC
这个作者很懒,什么都没留下…
展开
-
QLabel文字两端对齐解决方案
使用QProxyStyle + Qt::TextJustificationForced实现QLabel文字两端对齐原创 2024-01-08 23:01:58 · 803 阅读 · 0 评论 -
一个Qt鼠标透传场景与事件过滤器的用法
Qt使用事件过滤器解决鼠标透传与QScrollArea的冲突场景原创 2023-09-12 23:33:00 · 695 阅读 · 0 评论 -
Qt使用QQuickWidget的输入法问题(Qt5.12及以前)
本文针对Qt5.12.2及之前的版本可能出现的QQuickWidget输入法异常问题,研究了背后的原理,并提供了一些解决办法。原创 2023-07-31 23:17:30 · 885 阅读 · 2 评论 -
Qt绘制椭圆曲线的角度问题(离心角和旋转角)
使用Qt绘制椭圆曲线,由于旋转角与离心角的差异,导致达不到绘制期望。本文尝试提供转换的方法,方便计算离心角。原创 2022-08-09 21:37:23 · 2133 阅读 · 6 评论 -
关于Qt高频率信号槽合并的误解和方案
Qt开发过程中,面对高频率的信号触发,开发者会希望将信号合并。本文由简入难提出几个方案,尝试解决不同的应用场景。原创 2022-07-08 00:59:43 · 1057 阅读 · 4 评论 -
Qt信号槽与事件循环的关系
本文通过几个例子来研究Qt信号槽与事件循环的关系,帮助初学者遇到信号槽无法正确触发时快速定位问题。原创 2022-06-18 17:57:36 · 2153 阅读 · 1 评论 -
Qt程序字体初始化引起的白屏问题
Qt程序启动时字体初始化的白屏问题很早之前发现一个Qt启动时的白屏问题、新建一个Qt项目,在ui文件窗口中仅添加一个按钮,不做布局,编译并运行,窗口显示后会发现有个短暂的白屏过程。如果做个布局,把按钮放进去,则不会出现白屏,但窗口显示会有稍微的延迟。经过调试源码发现,第一次绘制按钮的堆栈里,QPlatformFontDatabase::fallbacksForFamily是一个比较耗时的同步调用,这个过程应该是获取系统里的字体信息。Qt5.15 + win10 + i7七代测试,大概350ms,也跟原创 2022-04-10 13:13:04 · 1710 阅读 · 0 评论 -
Qt Bug: MacOS平台非激活窗口右键菜单导致输入框光标不显示
MacOS平台上右键菜单导致输入框光标不显示问题很好复现,在桌面点击,使窗口处于非激活状态,此时输入框光标消失。直接在窗口上右键,弹出右键菜单后选择一个,菜单关闭,可以看到输入框没有了闪烁的光标,以下是Qt5.9.9测试结果:解决办法没有具体研究是什么导致了该问题,通过日志输出可以发现,光标消失后,QApplication::activeWindow返回空。所以尝试手动调用QApplication::setActiveWindow重设一下。考虑到目前没有其他复现的过程,所以通过全局拦截QEvent原创 2021-08-05 22:40:55 · 433 阅读 · 0 评论 -
Win32屏幕坐标转换Qt坐标
Win32消息的屏幕坐标如何转换Qt坐标偶尔一些情况,需要将Win32 API获取到的鼠标位置转换到Qt的窗口坐标中,常见的方法是除以当前窗口的缩放(QPaintDevice::devicePixelRatioF或者其他),这样做是不准确的,只适合单屏幕。实际原始坐标是基于整个桌面系统的坐标,而Qt的坐标则是基于屏幕与缩放后的坐标。可能鼠标位置确实在窗口上,但通过QWidget::mapFromGlobal就不知道转到哪里去了。下面是准确的办法:int x = GET_X_LPARAM(msg-&g原创 2021-07-21 22:18:02 · 759 阅读 · 1 评论 -
QTableView使用QTextDocument绘制Html的缩略支持
QTableView使用QTextDocument绘制单行Html的文本缩略支持如果要在QTableView的单元格支持Html,通常做法是使用QTextDocument绘制,由于带有标签的Html文本总是长于实际显示的文本,所以无法直接使用QFontMetrics::elidedText。如果对纯文本进行缩略,又不好判断对应Html是哪部分被替换了。实际上,QTextDocument支持文本编辑,Html文本会被转化为Qt的格式,因此,使用坐标去测试文本是否超出显示区域,再进行替换,可实现不同的缩略原创 2021-07-04 14:55:08 · 1102 阅读 · 1 评论 -
修改 QtCreator 配置解决 “无法运行 rc.exe” 问题
Qt 关于“无法运行 rc.exe”的解决办法问题描述当电脑里装了多个的Visual Studio版本或者使用更新的版本时,Qt可能会出现 无法运行 “rc.exe”,主要集中在Win10 + MSVC2015这个版本上。首先,使用VS2017或者VS2019可以通过安装 “VS2015 C++生成工具”来安装MSVC2015的环境,这样就不需要独立安装vs2015。MSVC的环境使用vcvarsall.bat来初始化,可以在QtCreator看到对应编译器的初始化命令(14.0是VS2015的编原创 2021-07-03 23:14:32 · 4942 阅读 · 5 评论 -
Qt滚动条(QScrollBar)圆角样式问题跟踪
Qt使用样式表设置圆角滚动条的黑色背景问题今天在知乎上看到一篇文章,描述使用样式表设置圆角滚动条时,圆角四周会有黑色区域而非透明,文章里最后借用 QSlider 来实现圆角滚动条。 我好奇 Qt 居然会出现这样的Bug,就研究了一下,顺便做个记录。 设置圆角样式:QScrollBar 有一些子控件区域,handle 为滑块, add-line、sub-line 默认是滚动条两侧箭头区域,add-page、sub-page 是滑块两侧区域,使用以下样式表设置圆角,除了滑块与主背景,都设置为透明:原创 2021-05-07 22:31:50 · 2386 阅读 · 3 评论 -
Qt实现一个支持QSS的Switch Button(开关按钮)
目录Qt实现一个支持QSS的Switch Button(开关按钮)问题解决思路实现方式其他不同的 Switch Button总结Qt实现一个支持QSS的Switch Button(开关按钮)本文会比较长,目的是为了提供一种实现自定义复杂控件的方式,对于使用 QSS 应用样式的项目可能会有帮助。实现的过程会相对比较复杂和难理解,仅作为研究,对于实际开发可能没什么太大价值。放上最终的实现效果图:问题常见的 Switch Button ,至少包含两部分,槽和滑块,这种由多个小部件组合的控件,在 Q原创 2020-12-12 15:34:41 · 4885 阅读 · 3 评论 -
QComboBox文字居中的一种解决办法
QComboBox文字居中的一种解决办法本文会尽可能解释一些内容,所以会显得有点长。关于QComboBox文字的居中,网上提供的主流方案是,通过 QComboBox::setEditable 设置为可编辑状态,再获取 QComboBox::lineEdit 设置为只读并居中文字。该方案的缺点在于改变了不可编辑状态下QComboBox的交互行为,例如,点击文本区域不会弹出列表,原因是QComboBox的一些交互行为依赖于 editable 属性,虽然可以通过自定义鼠标事件等方式完善,但不同平台上的交互原创 2020-11-05 01:45:49 · 5705 阅读 · 4 评论 -
QML虚拟键盘添加自定义样式
QML自定义虚拟键盘样式Qt Quick自带有个Qt Virtual Keyboard,方便用户集成虚拟键盘,其样式有两种,default和retro。Qt文档里解释可以通过QT_VIRTUALKEYBOARD_STYLE环境变量来设置样式。 文档中也提到如何修改默认样式(点击这里),本文也是针对文档里的方法做个操作解释。下图是Qt自带的两个样式路径:具体操作如下:拷贝其中一个到自己的项目下(比如default),并改个名字,这里修改为darkblue将目录里的qrc文件添加到项目原创 2020-08-23 01:31:00 · 2035 阅读 · 4 评论 -
std::bind在Qt connect中的一个应用
std::bind在Qt信号槽上的一个应用Qt5中允许将信号connect到其他可调用对象上,包括lambda和普通的成员函数等,在某些场景下,会经常使用lambda捕获一些变量,调用某个指定的成员函数,比如:void Widget::processChannel(const QString & name, bool enable); // 需要调用的函数//使用lambdaQString name = "name";connect(action, &QAction::trigge原创 2020-07-25 15:41:26 · 2278 阅读 · 0 评论 -
Qt中QLabel显示动态图的平滑缩放
解决Qt中QLabel显示动态图的平滑缩放Qt中显示动态图常用QLabel,创建QMovie对象,并通过QLabel::setMovie显示。需要将动态图根据容器缩放时,设置QLabel::setScaledContents。这样做会导致图片细节生硬,不够平滑。解决办法是,重写QLabel::paintEvent方法,读取QLabel::movie,将QMovie::currentPi原创 2017-11-18 14:11:25 · 5615 阅读 · 0 评论 -
Win32程序转UWP的开机启动配置(Qt/C++)
Win32程序转UWP的开机启动配置(Qt/C++)对于希望将传统的Windows桌面应用程序转化为UWP应用,微软提供了桌面桥来方便转换。虽然提供了多种形式,但实际都是将二进制的程序包根据配置打包到一个UWP应用里。比如:Desktop App Coverter支持将已有的安装包生成一个UWP程序,实际上是在一个完整的Windows镜像环境里模拟安装该软件,并将安装目录下的文件收集并打包原创 2018-01-03 19:50:17 · 1628 阅读 · 0 评论 -
用Qt实现一个动态缩放的滚动条
用Qt实现一个动态缩放的滚动条1. QScrollArea与QScrollBar的关系2. 理解QWidget::sizeHint()3. 布局变化通知部分代码:用Qt实现一个动态缩放的滚动条很早的时候做一个Qt项目,需求是实现一个滚动条动态变粗变细的效果。当时由于对Qt了解不多,就拒绝了。最近忙完工作,突然想起这个需求,花点时间实现了一下,确实不难。以下是实际效果图(使用style sh...原创 2019-03-29 01:23:57 · 3483 阅读 · 2 评论