QTabBar 既不完全展开也不均匀分隔制表符

Posted

技术标签:

【中文标题】QTabBar 既不完全展开也不均匀分隔制表符【英文标题】:QTabBar neither expands totally nor spaces tabs equally 【发布时间】:2013-09-25 19:10:22 【问题描述】:

我希望标签栏扩展到右边的空白区域。最好是所有选项卡的宽度都相同。我不知道该怎么做,因为我的样式表不起作用,而且我在文档中找不到选项。

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import QtGui,QtCore
import sys

class Main(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self)
        self.setFixedSize(600,500)

        self.tabBar=QTabBar(self)
        self.tabBar.setStyleSheet("QTabBarwidth:400px;")
        self.tabBar.setExpanding(True)

        self.layout=QVBoxLayout(self)
        self.layout.addWidget(self.tabBar)

        self.tabBar.addTab("Kontext Menu")
        self.tabBar.addTab("Settings in detail")
        self.tabBar.addTab("Help and tips")
        self.tabBar.addTab("About")
        self.tabBar.addTab("Credits")

        self.show()

if __name__ == '__main__':
    app=QApplication(sys.argv)
    sd=Main()
    app.exec()

我有这样的想法,因为对话框应该有固定的大小,可以将每个标签的宽度计算为 Totalwidth/(Amount of Tabs),但我仍然不知道如何告诉每个标签的宽度...

【问题讨论】:

【参考方案1】:

您可以使用void setExpanding(bool enabled) 展开选项卡。有关详细信息,请参阅文档:

http://qt-project.org/doc/qt-5.1/qtwidgets/qtabbar.html#expanding-prop

此外,您需要使用正确的样式语法,因为您似乎缺少正确的范围,即“::tab”部分。

另外,您需要在QTabWidget 本身而不是QTabBar 上设置样式表。一开始可能有点奇怪,但这是实现你想要的正确方法。

在这里你可以找到你应该写的代码:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import QtGui,QtCore
import sys

class Main(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self)
        self.setFixedSize(600,500)

        self.tabBar=QTabBar(self)
        self.tabBar.setStyleSheet("QTabBar::tabwidth:400px;")
        self.tabBar.setExpanding(True)

        self.layout=QVBoxLayout(self)
        self.layout.addWidget(self.tabBar)

        self.tabBar.addTab("Kontext Menu")
        self.tabBar.addTab("Settings in detail")
        self.tabBar.addTab("Help and tips")
        self.tabBar.addTab("About")
        self.tabBar.addTab("Credits")

        self.show()

if __name__ == '__main__':
    app=QApplication(sys.argv)
    sd=Main()
    app.exec()

【讨论】:

当我将self.myQTabWidget更改为self.tabBar时它正在工作。我认为:: 仅在 Qt-Syntax 中,但不适用于 python ...

以上是关于QTabBar 既不完全展开也不均匀分隔制表符的主要内容,如果未能解决你的问题,请参考以下文章

如何创建制表符分隔的 Select 语句?

sed 替换字符制表符分隔的 csv

用 0 填充空格/制表符分隔的空列

从制表符分隔的 xls 文件中读取数据

在 vba 中手动创建制表符分隔的文本文件

在 Ruby 中解析制表符分隔文件的最佳方法是啥?