ScrollBar QStyleSheet 在它应该是透明的时候显示有背景

问题描述

我正在尝试为 QtTableWidget 的滚动条设置样式,以便“滚动部分”不在栏上的部分是透明的,因此滚动条将具有背景和滚动部分的颜色(您所在的位置)把你的鼠标)是唯一与背景颜色不同的部分。

我尝试将其作为样式表:

QTableWidget {
    background-color:rgb(57,57,57);
    color:rgb(255,255,255);
    border-radius:3px;
}

QScrollBar:vertical {
    border: none;
    background: rgb(45,45,68);
    width: 14px;
    margin: 15px 0 15px 0;
    border-radius: 0px;
 }

/*  HANDLE BAR VERTICAL */
QScrollBar::handle:vertical {   
    background-color: rgb(80,80,122);
    min-height: 30px;
    border-radius: 7px;
}

但是当显示窗口时,我想要透明的部分填充了像这样的白色耕种背景:

ScrollBar

我不确定是什么导致了我的样式表中出现此问题。

这是重现窗口的代码

from pyside2.QtCore import (QCoreApplication,QMetaObject,QObject,QPoint,QRect,QSize,QUrl,Qt)
from pyside2.QtGui import (QBrush,QColor,QConicalGradient,QCursor,QFont,QFontDatabase,QIcon,QLinearGradient,QPalette,QPainter,Qpixmap,QRadialGradient)
from pyside2.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self,MainWindow):
        if MainWindow.objectName():
            MainWindow.setobjectName(u"MainWindow")
        MainWindow.resize(800,600)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setobjectName(u"centralwidget")
        self.tableWidget = QTableWidget(self.centralwidget)
        if (self.tableWidget.rowCount() < 100):
            self.tableWidget.setRowCount(100)
        self.tableWidget.setobjectName(u"tableWidget")
        self.tableWidget.setGeometry(QRect(30,30,721,461))
        self.tableWidget.setStyleSheet(u"QTableWidget {\n"
"   background-color:rgb(57,57);\n"
"   color:rgb(255,255);\n"
"   border-radius:3px;\n"
"}\n"
"\n"
"QScrollBar:vertical {\n"
"   border: none;\n"
"    background: rgb(45,68);\n"
"    width: 14px;\n"
"    margin: 15px 0 15px 0;\n"
"   border-radius: 0px;\n"
" }\n"
"\n"
"/*  HANDLE BAR VERTICAL */\n"
"QScrollBar::handle:vertical {  \n"
"   background-color: rgb(80,122);\n"
"   min-height: 30px;\n"
"   border-radius: 7px;\n"
"}\n"
"QScrollBar::handle:vertical:hover{ \n"
"   background-color: rgb(255,127);\n"
"}\n"
"QScrollBar::handle:vertical:pressed {  \n"
"   background-color: rgb(185,92);\n"
"}")
        self.tableWidget.setRowCount(100)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setobjectName(u"menubar")
        self.menubar.setGeometry(QRect(0,800,26))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setobjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)


        QMetaObject.connectSlotsByName(MainWindow)


class MainWindow(QMainWindow):
    
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

解决方法

试试看:

Date: 2021-04-26
Fixes: 2
Date: 2021-04-27
Fixes: 1

enter image description here