使用样式表自定义 QDial

Posted

技术标签:

【中文标题】使用样式表自定义 QDial【英文标题】:Customize QDial with stylesheet 【发布时间】:2014-01-06 14:35:01 【问题描述】:

QWidgetshere样式表的综合示例。不幸的是,示例中缺少QDial

我可以仅通过样式表来更改外观(基本上是旋钮的颜色、边框)吗?在this article 中一个新的表盘类支持样式表,但是不能用Qt 的标准类来完成吗?

滑块/滚动条示例展示了如何调整每个细节,所以我想知道QDial 是否有类似的东西?我知道我可以交换底层图像,但更喜欢一种简单的方法来设置它的颜色、边框。

我尝试了backgroud-colorbackgroundcolor等标准属性,但没有成功。也试过 QDial::handle ,所以提示会很有用。

【问题讨论】:

QDial 不支持样式表(这是一个旧的错误报告bugreports.qt-project.org/browse/QTBUG-1160)。虽然它可以通过自定义QStyle 进行自定义。查看 QDial 使用新 Fusion 样式的外观。 【参考方案1】:

您可以使用样式表更改背景,但似乎就是这样。

也许自从您在 2014 年 1 月 6 日提出这个问题后情况发生了变化,但我能够让样式表仅在后台工作。我尝试的其他一切都没有效果。

注意背景变化对针的影响。

from PyQt4 import QtGui, QtCore
import os
import time

class MyDial(QtGui.QDial):
    style =''' 
    QDial
    
        background-color:QLinearGradient( 
            x1: 0.177, y1: 0.004, x2: 0.831, y2: 0.911, 
            stop: 0 white, 
            stop: 0.061 white, 
            stop: 0.066 lightgray, 
            stop: 0.5 #242424, 
            stop: 0.505 #000000,
            stop: 0.827 #040404,
            stop: 0.966 #292929,
            stop: 0.983 #2e2e2e
        );
    
    '''
    def __init__(self, parent=None):
        super(MyDial, self).__init__(parent)

        self.setStyleSheet(self.style)

        self.setRange(0,100)
        self.setValue(0)
        self.setWrapping(True) # Smooth transition from 99 to 0
        self.setNotchesVisible(True)

【讨论】:

以上是关于使用样式表自定义 QDial的主要内容,如果未能解决你的问题,请参考以下文章

如何通过样式表自定义 QTableWidget?

如何在 Qt 中自定义列表视图

旋钮QDial

R语言使用table1包绘制(生成)三线表使用单变量分列构建三线表自定义设置不显示overall

R语言使用table1包绘制(生成)三线表使用单变量分列构建三线表自定义overall的标签名称

R语言使用table1包绘制(生成)三线表使用单变量分列构建三线表自定义为指定的分列因子添加分组标签