问题标签 [qpalette]
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.
qt - Qt 在样式表中使用调色板颜色
在 qt 中,您通常QWidget
使用QPalette
.
例子:
现在我有一个小问题。无法使用 . 更改 QLineEdit 的边框颜色QPalette
。这意味着,我必须使用QStyleSheet
.
例子:
但现在我不能用 设置 QLineEdit 的基色QPalette
,因为 QLineEdit 的背景色不再连接到QPalette::base
. 这意味着,以下代码不会更改background-color
:QLineEdit
background-color
但是在 StyleSheet 中定义 QLineEdit是不可能background-color
的,因为QLineEdit
必须是动态的。
我的问题:如何将 with 的背景颜色连接起来QLineEdit
以动态QPalette::base
定义with ?background-color
QLineEdit
QPalette
qt - 在 QStyledItemDelegate 中覆盖 Qt 样式表
我有一个QTableView
使用自定义QStyledItemDelegate
来呈现表格的每一行。样式表通过执行以下操作来设置 TableView 上选定行的背景颜色:
这可以正常工作,但在某些情况下,我想通过使其半透明来调整所选行背景的 alpha。我通过覆盖paint()
.QStyledItemDelegate
这确实改变了颜色,但颜色QPalette::Highlight
不正确。此外,我尝试了所有不同的调色板颜色角色,但它们都没有反映样式表中设置的背景颜色。但是,如果我执行以下操作,它就可以正常工作(减去不透明度)。
我已经读过结合 Qt 样式表QPalette
并不是一个好主意,但我唯一的选择是在样式表中使用另一个变量来反映不透明度,我想不惜一切代价避免这种情况。
c++ - 模仿基于 QApplication::palette() 的颜色样式行为
这很简单:我想在不禁用项目的情况下模拟被禁用项目的颜色变化。
拥有QTableWidgetItem
和QStandardItem
物品,我正在使用这样的代码
马上。但是,如果用户使用新调色板调用QApplication::setPalette( ... )
,则必须手动刷新该项目。我宁愿设置一个ColorGroup
and Role
,所以 Qt 知道如何刷新。有可能这样做吗?
qt - 更新 QTextDocument 中锚点的默认颜色
我认为这个问题与设计决定有关(我认为这在某种程度上是错误的),但我更愿意在提交可能的错误报告之前在这里询问。
我有一个 QTextEdit,它继承了父窗口的默认字体颜色的调色板,如果用户想要更改该文本编辑窗口的颜色,该调色板可能会在运行时更改。
虽然这适用于标准文本,但QPalette.Link
颜色存在问题:一旦我更改了调色板Text
属性,未格式化的文本就会正确更新,但如果我更改Link
属性,结果将无法按预期工作。
在下图中,您可以看到应用于四种不同方法的起点。调色板(应用于应用程序)是一致的。
如果我为调色板选择不同的颜色(Text
和Link
),我希望默认字体颜色和链接颜色都将被应用,至少对于那些使用该调色板设置的小部件。不幸的是,这只发生在最后一个使用当前palette.text().color().getRgb()
作为文档默认样式表的小部件中,并且它只适用于新锚点。
此时,每当我将颜色再次更改为蓝色时,我们都可以期待结果:
同样,默认文本颜色适用于所有 QTextEdit 小部件,但它仅适用于添加到最后文本编辑的最新链接。
在对所有小部件进行了一些简单toHtml()
的检查并浏览了 Qt 源代码之后,我意识到每当添加新的锚点时,实际的 html 代码嵌入锚文本的文本样式(而不是将文本格式保留为默认设置并在指定时覆盖它)。
虽然我可能会提交一份报告,正如开头所写的那样,但我知道在考虑并最终(如果有的话)修复之前需要一些时间。
所以,问题是:我是否遗漏了什么/做错了什么,或者有没有办法避免这种行为并确保所有未格式化的锚点实际上使用小部件(或应用程序)的调色板集?
显然,我不是在谈论手动解析/硬修复现有代码。
python - 更改 PyQt5 的调色板
我正在尝试将 GUI 调色板从深色更改为浅色。
这就是 PyQt5 所说的调色板可以设置为默认值(changeSkinLight 方法)的方式。
但是当我将功能分配给一个动作时。它只是运行 changeDarkSkin 而对 changeLightSkin 不做任何事情。如何像在 QtDesigner 中一样将调色板设置为默认值?
qt - 如何访问 Qt 使用的边框颜色以用于 qtstylesheets 小部件样式(通过 QPalette)?
我可以使用 Qt 应用程序中使用的不同颜色QPalette
通过 qtstylesheets 来设置小部件的样式,例如background-color: palette(base)
. 但是,我没有找到用于绘制某些小部件(如QGroupBox
或)边框的颜色QFrame
。
是否可以访问此颜色(通过QPalette
?)以及用于 qtstylesheets 小部件样式?
python - PyQt6 - QPalette 无法在 mdiArea 窗口中正常工作
我正在使用 QMdiArea 来保存一堆窗口,我希望能够根据在其中一个子窗口中找到的项目列表来设置所有窗口的颜色主题。
PyQt5 似乎可以正常工作,但使用 PyQt6 时,它会在用户单击另一个窗口(应用程序外部)时改变颜色;单击窗口将颜色更改回蓝色(默认)
单独运行设置窗口会保留更改,但通过 QMdiArea 运行它是不正确的。
工作示例:
c++ - QPalette 传播到 QDialog 不起作用
我在我的QWidget
. 在那个小部件中,我称之为QDialog
. 该对话框出现在默认调色板中,它是浅色的。
这是我的自定义对话框(在这种情况下用于为调色板选择颜色!扭曲吧?).cpp
文件:
和.h
文件:
getPalette
我从父小部件调用静态方法。我试过添加这个:
之前dialog->setFont(parent->font());
在那个静态方法中并且不起作用。我的问题是如何将 QPalette 从父 QWidget 传播到子 QDialog?
这就是我使用它的方式:
我有一个主题列表,用户可以将自定义主题添加到该列表中。
python - QPalette 在 Qt6 中没有正确更改。更改仅在窗口不活动时可见
我有一个我在 Qt6 中使用的 GUI 的小例子,它在切换调色板颜色时出现问题(从深色主题切换到浅色主题)。当我将更改应用于 QPalette 以更改文本颜色时,它们仅在窗口处于非活动状态时才起作用。奇怪的是,如果我从样式表中删除字体系列规范,那么颜色更改就会正常工作。这一切都在 Qt5 中运行良好,没有任何混乱。
- 加载时,GUI 看起来不错
- 单击“更改主题”按钮后,它看起来很好,只是我使用 Palette 更改的文本颜色设置不起作用(它仍然是黑色)
- 如果我单击我的桌面或其他窗口以使我的 GUI 处于非活动状态,它将显示正确的文本颜色(红色)
欢迎任何解决方法建议(使颜色和字体都始终正常工作),但我很想知道我在这里实际上做错了什么,以及为什么它曾经在 Qt5 中有效而在 Qt6 中无效!谢谢!