问题标签 [qicon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何让 QIconEngine 可以访问 QPalette?
语境
假设我想实现一个自定义 QWidget 类,它应该实现一个按钮(类似于 QPushButton)。
要求:
- 它应遵循操作系统的颜色(也是图标)
- 它应显示
QWidget::action
. 对于本练习,图标可以是使用 QPainter 手动绘制的简单矩形。在最终版本中,我使用 SvgRenderer 用操作系统颜色为图标着色。 - 它应允许不同的尺寸和分辨率。
注意:QPalette
有助于为多种目的获取操作系统颜色。重要的是不要保存调色板,而是QWidget::palette()
在需要时调用:这允许操作系统在用户更改操作系统上的颜色设置时正确更新 UI。
为了说明我的尝试,我将使用以下示例:
我的假设是QAction::icon
在小部件上放置一个图标。但我在努力理解它设计背后的尝试是什么,因为:
QPalette
没有传递给QIconEngine
,因此,我看不到如何使用正确的操作系统颜色呈现图标。我可能可以想象一些黑客将其保存QPalette
在一个static
变量中,但这似乎不是正确的方法。QIconEngine
似乎是自定义的方式QIcon
,当我可以通过扩展获得相同的结果时,为什么需要这样做QIcon
?(为此,QIcon
需要 bevirtual
,令人沮丧的是事实并非如此)。- 我应该
QIconEngine
为每个创建一个实例QIcon
吗?还是QIconEngine
所有人共享的Icons
? - 我应该在
QIconEngine
或 中缓存图标的呈现QIcon
吗?
问题:
如何使 QPalette 可访问,以便 QIconEngine 可以以正确的(OS)颜色绘制图标?
python - QPainter.drawText 输出模糊
我正在尝试使用QPainter
's创建一个系统托盘图标来显示一个字符串(“Hello world!”在下面的代码片段中) drawText
。问题是文本不清晰,而且相当模糊(如果相关的话,我有一个 HiDPI 监视器)。这是我的系统托盘的屏幕截图(将日期/时间与“Hello world”进行比较)。
这是生成系统托盘图标的代码。
编辑 1:创建后,图标将在以下上下文中使用:
编辑2:这里有一些附加信息:
- 操作系统:Ubuntu 20.04
- PyQt5 来源:https ://anaconda.org/conda-forge/pyqt/
- PyQt5 版本:5.12.3
如何使文本看起来更清晰?非常感谢!
qt - 对关闭状态使用 Qicon 禁用模式
我有一堆可检查的 QToolbuttons,我希望图标在未选中状态下“变灰”。我可以通过在 QIcon 中为开/关状态设置不同的文件来实现这一点。像这样:
但是由于 QIcon 可以创建在禁用模式下使用的自身“灰色”版本,我更喜欢使用禁用模式图标而不是自己创建所有图标的灰色版本。这可能吗?