使用样式表自定义QDial

6

这里有关于QWidgets样式表的全面示例,链接在这里。不幸的是,这些例子中缺少QDial

仅通过样式表可以更改外观(通常是旋钮的颜色和边框)吗?在这篇文章中,一种新的拨号器类支持样式表,但不能使用Qt的标准类吗?

滑块/滚动条示例展示了如何微调每一个细节,那么有没有类似于QDial的东西呢?我知道我可以更换底层图像,但希望有一种简单的方法来设置其颜色和边框。

我尝试了标准属性,例如background-colorbackgroundcolor,但都没有成功。还尝试了QDial::handle,所以需要一些提示。


1
QDial 不支持样式表(这里有一个旧的错误报告 https://bugreports.qt-project.org/browse/QTBUG-1160)。但是可以通过自定义 QStyle 进行自定义。查看新的 Fusion 样式下 QDial 的外观。 - Oleg Shparber
1个回答

3
您可以使用样式表更改背景色,但似乎只能更改背景色。
也许自2014年1月6日您提出问题以来情况有所改变,但我只能让样式表在背景上起作用。其他我尝试的一切都没有效果。
请注意背景更改如何影响指针。 The QDial widget rendered in FC20 under MATE using the giving stylesheet
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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接