如何在Qt5qt中更改样式

Dav*_*ale 5 styles pyqt qt5

我正在使用PyQt编写Qt5应用程序.我想了解如何更改整个应用程序的样式.

旧的Qt4称之为

app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create('Cleanlooks'))
Run Code Online (Sandbox Code Playgroud)

这里建议什么都不做.

他们被弃用了吗? https://blog.qt.io/blog/2012/10/30/cleaning-up-styles-in-qt5-and-adding-fusion/

谢谢!

a_m*_*_67 6

可能Cleanlooks在您的系统上不再可用。通过QStyleFactory.keys()你可以问你的系统上可用的样式。在Ubuntu 16.04和pyqt5上,我只能得到:

['Windows', 'GTK+', 'Fusion']
Run Code Online (Sandbox Code Playgroud)

编辑:

在这里您找到qstyleplugin

包含6种其他样式,您必须自己编译

  1. 编辑:

在ubuntu 16.04上,python3.5通过将styleplugins安装到QT5并针对此QT5从源代码编译pyqt5使其工作:

通过onlineinstaller安装QT 5.7

在安装目录搜索qmake/opt/Qt/5.7/gcc_64/bin/qmake

将qtstyleplugin下载到任意目录git clone https://code.qt.io/qt/qtstyleplugins.git并安装:

cd qtstyleplugins
/opt/Qt/5.7/gcc_64/bin/qmake # the qmake from the fresh installation
make
make install
Run Code Online (Sandbox Code Playgroud)

现在有一个/opt/Qt/5.7/gcc_64/plugins/包含其他样式的文件夹“样式” 。

下载sip-source,编译并安装

下载pyqt5-source,编译并安装它,在该步骤中python3 configure.py,通过--qmake-option 提供来自QT5-Installation的qmake,并在输出中查找缺少的依赖项。

现在可以使用以下样式:

['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'Windows', 'Fusion']
Run Code Online (Sandbox Code Playgroud)

我有一个小错误:

RuntimeError: the sip module implements API v11.0 to v11.2 but the PyQt5.QtCore module requires API v11.3
Run Code Online (Sandbox Code Playgroud)

为防止这种情况,请sudo apt-get purge python3-sip在安装前啜这里所描述

  • `从 PyQt5.QtWidgets 导入 QStyleFactory` (2认同)