让 PySide2 QTabWidget 看起来更像 Maya 的本机版本

问题描述 投票:0回答:1

有人知道如何去掉 QTabWidget 中所有选项卡下的细线,以便它更像是 Maya 原生的 UI 吗?我尝试了 ("QTabWidget::pane {border: 0pxsolid #000000;}") 的样式表,它确实删除了它,但由于某种原因破坏了更多的东西,使未选定的选项卡与选定的选项卡一样轻,不知道为什么,猜猜我的样式表经验让我失望。 (取消下面代码中样式纯粹线的注释)谢谢

from PySide2 import QtWidgets
        
class Tab1(QtWidgets.QWidget):
    
    def __init__(self, parent=None, ):
        super(Tab1, self).__init__(parent)
        
        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.addWidget(QtWidgets.QLabel("Tab:"))
        main_layout.addStretch()

        
class TabWidgetTesting(QtWidgets.QDialog):

    def __init__(self, parent=None):
        super(TabWidgetTesting, self).__init__(parent=parent)
        self.setMinimumSize(240, 320)

        self.create_widgets()
        self.create_layouts()
    
    def create_widgets(self):
        self.Tab1 = Tab1()
        self.Tab2 = Tab1()
        
        self.tab_widget = QtWidgets.QTabWidget()
        #self.tab_widget.setStyleSheet("QTabWidget::pane {border: 0px solid #000000;}") 
        self.tab_widget.addTab(Tab1(), "Tab 1")
        self.tab_widget.addTab(Tab1(), "Tab 2")
        
        
    def create_layouts(self):
        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.addWidget(self.tab_widget)
    

if __name__ == "__main__":
    test_dialog = TabWidgetTesting()
    test_dialog.show()
    

我希望 Maya 的内部样式能够处理这个问题,并且让它们看起来与原生样式相同,而没有下面的小线

pyqt pyside maya
1个回答
0
投票

您可以使用以下 css 来消除

QTabWidget
中所有选项卡下的细线,使其看起来更像原生 Maya UI:

self.tab_widget.setStyleSheet("QTabBar::tab { border: 0; padding: 8px; }")

这是更新后的代码:

from PySide2 import QtWidgets

class Tab1(QtWidgets.QWidget):

    def __init__(self, parent=None):
        super(Tab1, self).__init__(parent)

        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.addWidget(QtWidgets.QLabel("Tab:"))
        main_layout.addStretch()

class TabWidgetTesting(QtWidgets.QDialog):

    def __init__(self, parent=None):
        super(TabWidgetTesting, self).__init__(parent=parent)
        self.setMinimumSize(240, 320)

        self.create_widgets()
        self.create_layouts()

    def create_widgets(self):
        self.Tab1 = Tab1()
        self.Tab2 = Tab1()

        self.tab_widget = QtWidgets.QTabWidget()
        self.tab_widget.setStyleSheet("QTabBar::tab { border: 0; padding: 8px; }")
        self.tab_widget.addTab(Tab1(), "Tab 1")
        self.tab_widget.addTab(Tab1(), "Tab 2")

    def create_layouts(self):
        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.addWidget(self.tab_widget)

if __name__ == "__main__":
    test_dialog = TabWidgetTesting()
    test_dialog.show()

此 CSS 更改应该消除选项卡后面的线条,使它们看起来更像原始的 Maya UI。调整

QTabBar::tab
选区中的填充和其他属性以实现所需的外观。

© www.soinside.com 2019 - 2024. All rights reserved.