QTabWidget。如何将一个标签移动到正确的位置?

时间:2015-02-03 09:49:59

标签: python qt tabs pyqt4 qtabwidget

标准布局标签从左到右。所有标签都在附近。 enter image description here

如何更改一个标签的位置,以便它连接到右边缘?像这样:

enter image description here

有可能吗?

2 个答案:

答案 0 :(得分:4)

您可能希望在最后一个小部件之前插入一个空小部件,然后将其禁用并将其设置为透明。 这实现了你想要的。附上示例代码。

from PyQt4 import QtGui
import sys

def main():

    app     = QtGui.QApplication(sys.argv)
    tabW    = QtGui.QTabWidget()
    tabW.setStyleSheet("QTabBar::tab:disabled {"+\
                        "width: 300px;"+\
                        "color: transparent;"+\
                        "background: transparent;}")
    pushButton1 = QtGui.QPushButton("QPushButton 1")
    pushButton2 = QtGui.QPushButton("QPushButton 2")

    tab1    = QtGui.QWidget()    
    tab2    = QtGui.QWidget()
    emptySpace = QtGui.QWidget()
    tab3    = QtGui.QWidget()

    vBoxlayout    = QtGui.QVBoxLayout()
    vBoxlayout.addWidget(pushButton1)
    vBoxlayout.addWidget(pushButton2)

    #Resize width and height
    tabW.resize(500, 500)


    #Set Layout for Third Tab Page
    tab3.setLayout(vBoxlayout)   

    tabW.addTab(tab1,"Tab 1")
    tabW.addTab(tab2,"Tab 2")
    tabW.addTab(emptySpace,"ES")
    tabW.setTabEnabled(2,False)
    tabW.addTab(tab3,"Tab 3")

    tabW.setWindowTitle('PyQt QTabWidget Add Tabs and Widgets Inside Tab')
    tabW.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

答案 1 :(得分:0)

是的,您可以使用样式表进行设置。

from PyQt4.QtGui import *


style = """QTabWidget::tab-bar{
    alignment: right;
}"""


class MyWidget(QTabWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.mW1 = QWidget(self)
        self.mW2 = QWidget(self)
        self.addTab(self.mW1, "w1")
        self.addTab(self.mW2, "w2")
        self.setStyleSheet(style)


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    app.exec_()

Diaplay on the right

顺便说一下,还有一种方法

self.setTabPosition(QTabWidget.East)

这将显示在东部 enter image description here

相关问题