如何在 pyqt 中使用 QtQuickControls2 样式?
Posted
技术标签:
【中文标题】如何在 pyqt 中使用 QtQuickControls2 样式?【英文标题】:How to use QtQuickControls2 Style in pyqt? 【发布时间】:2021-10-22 13:58:08 【问题描述】:我读过一篇文章The Imagine Style,可以在qml
中使用c++
代码样式。
需要qtquickcontrols2.conf
和Imagine Style 或者其他文件。
但我不知道如何在 pyqt 风格中使用它。
我想知道在pyqt中可以使用The Imagine Style
吗?
【问题讨论】:
你的意思是用setStyleSheet()
将它用于QtWidgets 吗?如果是这种情况,则不能,因为文档中提到的 Imagine Style 仅适用于 Qt Quick。
@musicamante 其实只针对Qt Quick Control2,不是QtQuick的全部
【参考方案1】:
这个问题与PyQt QML Material Design button background won't change 类似,所以这篇文章将笼统地介绍如何使用QtQuickControls 2 的样式,我的回答是基于将官方文档中的选项:Styling Qt Quick Controls 2 转换为python:
1。在 Python 中使用 QQuickStyle(仅适用于 PySide2 和 PySide6)
from PySide2.QtQuickControls2 import QQuickStyle
# from PySide6.QtQuickControls2 import QQuickStyle
# ...
engine = QQmlApplicationEngine()
QQuickStyle.setStyle("Imagine")
2。命令行参数
app = QGuiApplication(sys.argv + ["-style", "Imagine"])
3。环境变量
os.environ["QT_QUICK_CONTROLS_STYLE"] = "Imagine"
4。配置文件
qtquickcontrols2.conf
[Controls]
Style=Imagine
resource.qrc
<RCC>
<qresource prefix="/">
<file>qtquickcontrols2.conf</file>
</qresource>
</RCC>
PyQt5
pyrcc5 resources.qrc -o resources_rc.py
PySide2:
rcc -g python resources.qrc -o resources_rc.py
或
pyside2-rcc resources.qrc -o resources_rc.py
然后你只需要在你的主文件中导入模块:
import resources_rc
注意:“Imagine”可以更改为任何样式:Default、Fusion、Material 和 Universal。
【讨论】:
我在 win10 上使用 PySide6.1.2 并按照您的步骤进行操作。但是它发出了警告消息QApplication: invalid style override 'Imagine' passed, ignoring it.Available styles: windowsvista, Windows, Fusion
。
@jie 为什么使用 QApplication?一般来说,QGuiApplication 就足够了。另一方面,该警告是误报,因为它认为您正在将样式设置为 QtWidgets。跳过它或使用其他选项。
QApplication可以做更多的事情,写QWidgets
控件或者其他好玩的东西。
@jie 如果您不想看到那个烦人的警告,请使用其他选项,例如:os.environ["QT_QUICK_CONTROLS_STYLE"] = "Imagine"
zh,我会尝试使用您的提示。以上是关于如何在 pyqt 中使用 QtQuickControls2 样式?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PyQt 在窗口中切换布局? (不关闭/打开窗口)
如何在 PyQt6 中检查 MouseButtonPress 事件?