使每个选项卡的大小相同且可展开[关闭]
Posted
技术标签:
【中文标题】使每个选项卡的大小相同且可展开[关闭]【英文标题】:Make every tab the same size and expandable [closed] 【发布时间】:2019-12-30 21:30:38 【问题描述】:我在看 2 年前提出的这个问题:Make every tab the same width and also expandable
解决方案正是我正在寻找的,只是它对我不起作用。我认为我的代码中缺少一些元素。
我使用 QtDesigner 来设计窗口。我导入创建的.py
。此文件包含我想要调整大小并使用所有可用宽度的QTabWidget
。它被插入到 HBoxLayout 中,旁边有一个 Frame。
然后我在controller_file.py
中进行如下操作:
我覆盖了TabBar
类:
class tabBar(QTabBar):
def __init__(self, parent=None):
QTabBar.__init__(self, parent)
def tabSizeHint(self, index):
size = QTabBar.tabSizeHint(self, index)
w = int(self.width()/self.count())
return QSize(w, size.height())
然后,我在controller_file.py
的__init__中.setTabBar(tabBar())
到QTabWidget
:
class flex_ctrl(QObject):
def __init__(self, model, view, parent=None):
super().__init__(parent)
self._model = model
self._view = view
self.is_save = True
self.file_name = ''
self._view.graph_tot_tab.setTabBar(tabBar())
self._get_file_menu()
self._connect_signals()
self.view.installEventFilter(self)
问题是当我这样做时,栏消失了。我无法在标签之间切换:
变成这样:
你能帮帮我吗?
P.S:抱歉,如果不给出整个代码,我无法给出一个完全可重现的问题示例。我没有找到如何重现这个“错误”
【问题讨论】:
见***.com/questions/46007131/… 【参考方案1】:它不起作用,因为 QTabBar 需要一个父级来正确构造自己(并确保 QTabWidget 可以正确初始化它)。
在初始化标签栏时只需将标签小部件添加为父小部件,但请记住,这必须在添加任何标签之前完成:
setTabBar(QTabBar):
用标签栏 tb 替换对话框的 QTabBar 标题。 请注意 这必须在添加任何选项卡之前调用,或者行为 未定义。
只要不存在任何选项卡,以下内容就足够了:
self._view.graph_tot_tab.setTabBar(tabBar(self._view.graph_tot_tab))
如果您已经在 Designer 中添加了选项卡,这显然是个问题。
虽然可能的解决方案可能是使用 for 循环删除所有现有选项卡并再次添加它们(在删除过程之后),但我从未测试过它,我不太确定关于结果。最好的解决方案是继承 QTabWidget 并将 Designer 中的选项卡小部件提升到您的自定义类。
【讨论】:
以上是关于使每个选项卡的大小相同且可展开[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使 VS Code 编辑器 Ctrl+Tab 循环选项卡的顺序与它们在屏幕上显示的顺序相同吗?
根据选项卡的数量自动调整选项卡标题的大小 (AvaloniaUI)