- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将我的 GUI 应用程序从 PyQt4 转换为 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyle,比如 plastique
, Cleanlooks
等等 但是在 PyQt5 中我们只有 Fusion
样式以及一些普通的旧 Windows 样式。
我们如何向 PyQt5 添加更多自定义样式?
最佳答案
Qt 的许多功能都是由插件实现的,样式就是这种情况。所以在这种情况下你必须编译qtstyleplugins:
您可以使用以下过程来编译 qtstyleplugins:
python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"
.git clone https://code.qt.io/qt/qtstyleplugins.git
cd qtstyleplugins
qmake
make
make install
python -c "import os; from PyQt5 import QtCore; print(os.path.join(QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath), 'styles'))"
输出:
/home/qtuser/Documents/qt_venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/styles
name: question_63477276
on: [push]
jobs:
ci:
name: ${{ matrix.os.name }} Python-${{ matrix.python }} Qt-${{ matrix.qt }}
runs-on: ${{ matrix.os.runs-on }}
strategy:
fail-fast: false
matrix:
os:
- name: Windows
extension: "*.dll"
runs-on: windows-latest
- name: Linux
extension: "*.so"
runs-on: ubuntu-latest
- name: MacOS
extension: "*.dylib"
runs-on: macos-latest
python: [3.6, 3.7, 3.8]
qt: [5.15.0]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install Linux dependencies
if: matrix.os.name == 'Linux'
run: |
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
architecture: x64
- name: install pyqt5
run: pip install pyqt5
- name: before
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ matrix.qt }}
dir: ${{ github.workspace }}/qt/
- name: clone qtstyleplugins
run: git clone https://code.qt.io/qt/qtstyleplugins.git
- name: compile qtstyleplugins in Windows
if: matrix.os.name == 'Windows'
shell: cmd
run: |
call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
cd qtstyleplugins
qmake
nmake
nmake install
- name: compile qtstyleplugins in Linux or MacOS
if: matrix.os.name == 'Linux' || matrix.os.name == 'MacOS'
run: |
cd qtstyleplugins
qmake
make
make install
- name: copy binaries
run: python questions/63477276/search_binaries.py qtstyleplugins/plugins/styles/
- name: after
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: upload
uses: actions/upload-artifact@v2
with:
path: qtstyleplugins/plugins/styles/${{ matrix.os.extension }}
name: qtstyleplugins-${{ matrix.os.name }}-Python${{ matrix.python }}-Qt${{ matrix.qt }}
您可以从
here 下载 pyqt5 5.15 的二进制文件.
python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
输出:
['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'windowsvista', 'Windows', 'Fusion']
关于python - 将 QStyles 添加到 Pyqt5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63477276/
在我的代码中有一堆调用试图创建 QIcons从QStyle标准像素图,例如: QIcon groupIcon; groupIcon.addPixmap( style()->standardPixmap
我有一个 QTreeView 并为此使用了 ProxyStyle。 上面的图片只是标题。现在我需要在标题标签旁边绘制上/下箭头(用于排序项目),如图所示。为了将箭头放在正确的位置,我需要知道: 左边距
我正在将我的 GUI 应用程序从 PyQt4 转换为 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyle,比如 plastique , Cleanlooks等等 但是在 PyQt5 中我
QStyle::SH_ToolTip_WakeUpDelay 似乎可以用来设置工具提示唤醒时间。我如何在 C++ 代码中执行此操作? 最佳答案 您可以使用 QProxyStyle 覆盖您正在使用的任何
我正在用 PyQt4 编写 GUI(并迁移到 PyQt5)。这就是我启动 GUI 的方式: if __name__== '__main__': app = QApplication(sys.a
我正在尝试获取父级背景并将其设置为复选框背景色。我有这种绘制复选框的方法: void paint( QPainter* painter, const QStyleOptionV
使用以下代码,我尝试使用 QStyle.drawControl() 渲染一个红色按钮: #include #include class Widget : public QWidget {
我想更改 QStyle::PM_TabBarTabHSpace PyQt 应用程序的属性。我读了 Qt document for QStyle ,但我不确定如何在 PyQt 中正确设置。 非工作代码:
是否可以通过自定义应用程序范围的 QStyle 为 QPushButton 定义默认的最小高度? 我知道这可以使用样式表来实现,但出于性能原因我宁愿不使用它们。 最佳答案 您可能会考虑查看 QAppl
一个QWidget作为一个paintEvent函数负责他的绘图。为了正确实现这个功能,一个QStyle对象被用来表示每个组件,一个QStyleOption对象被用来保存控件的状态。 例如:一个自定义的
这两个类都提供文件夹和文件的标准图标。我应该使用哪一个?它们保证相同吗? 最佳答案 Qt 并不严格保证......然而,在当前的实现中,QFileIconProvider 是使用样式的简写。这不太可能
我正在 Windows 7 Ultimate 32 位上使用 Qt 4.7 编写一个 GUI 应用程序。我想让用户从主菜单更改 GUI 样式。可以从菜单中选择多个 QStyle(QCDEStyle、Q
我使用以下标签样式水平绘制标签栏文本东选项卡位置。文本绘制正常,只要我不设置任何边距QTabBar::标签。在那种情况下,文本方向保持垂直,但有奇怪的偏移。 class TabStyle : publ
我是一名优秀的程序员,十分优秀!