使每个选项卡大小相同且可扩展
Make every tab the same size and expandable
我在看 2 年前问的这个问题:
这个解决方案正是我要找的,只是它对我不起作用。我想我的代码中缺少一些元素。
我用QtDesigner设计了window。我导入创建的 .py
。此文件包含我要调整大小并使用所有可用宽度的 QTabWidget
。它被插入到旁边有一个框架的 HBoxLayout 中。
然后我在controller_file.py
中进行如下操作:
我覆盖了 TabBar
class:
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())
然后,我.setTabBar(tabBar())
到QTabWidget
中的controller_file.py
的__init__:
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:抱歉,如果不给出完整的代码,我无法给出一个完全可重现的问题示例。我没有找到如何重现这个 "error"
它不起作用,因为 QTabBar 需要一个父级来正确构造自己(并确保 QTabWidget 可以正确初始化它)。
只需在初始化标签栏时将标签小部件添加为父项,但请记住,必须完成在添加任何选项卡:
Replaces the dialog's QTabBar heading with the tab bar tb. Note that
this must be called before any tabs have been added, or the behavior
is undefined.
只要选项卡还不存在,以下内容就足够了:
self._view.graph_tot_tab.setTabBar(tabBar(self._view.graph_tot_tab))
相反,如果您已经在 Designer 中添加了选项卡,这显然是个问题。
虽然一个可能的解决方案可能是使用 for 循环删除所有现有选项卡并再次添加它们(在 删除过程之后),但我从未测试过它并且我我不太确定结果。最好的解决方案是子 class QTabWidget 并将 Designer 中的选项卡小部件提升到您的自定义 class.
我在看 2 年前问的这个问题:
这个解决方案正是我要找的,只是它对我不起作用。我想我的代码中缺少一些元素。
我用QtDesigner设计了window。我导入创建的 .py
。此文件包含我要调整大小并使用所有可用宽度的 QTabWidget
。它被插入到旁边有一个框架的 HBoxLayout 中。
然后我在controller_file.py
中进行如下操作:
我覆盖了 TabBar
class:
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())
然后,我.setTabBar(tabBar())
到QTabWidget
中的controller_file.py
的__init__:
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:抱歉,如果不给出完整的代码,我无法给出一个完全可重现的问题示例。我没有找到如何重现这个 "error"
它不起作用,因为 QTabBar 需要一个父级来正确构造自己(并确保 QTabWidget 可以正确初始化它)。
只需在初始化标签栏时将标签小部件添加为父项,但请记住,必须完成在添加任何选项卡:
Replaces the dialog's QTabBar heading with the tab bar tb. Note that this must be called before any tabs have been added, or the behavior is undefined.
只要选项卡还不存在,以下内容就足够了:
self._view.graph_tot_tab.setTabBar(tabBar(self._view.graph_tot_tab))
相反,如果您已经在 Designer 中添加了选项卡,这显然是个问题。
虽然一个可能的解决方案可能是使用 for 循环删除所有现有选项卡并再次添加它们(在 删除过程之后),但我从未测试过它并且我我不太确定结果。最好的解决方案是子 class QTabWidget 并将 Designer 中的选项卡小部件提升到您的自定义 class.