【问题标题】:PyQT Qtabwidget add, remove, hide, show certain tabPyQT Qtabwidget 添加、删除、隐藏、显示特定选项卡
【发布时间】:2015-06-16 02:32:54
【问题描述】:

我正在尝试构建一个 GUI,它将:

  1. 使用描述特定类型问题的参数加载文件。
  2. 根据文件的参数,仅显示QTabwidget 中的某些选项卡(Qt Designer 中预定义的许多.ui

我计划制作一个QTabwidget,例如 10 个选项卡,但根据加载的参数,只有一个应该可见。启用某些选项卡不是一个选项,因为它需要很多空间并且禁用的选项卡是灰色的。我不想看到禁用的标签。

删除选项卡可能是一个选项,但索引与特定选项卡无关,因此我必须注意索引的变化。此外,如果用户加载另一个具有不同参数的文件,则应添加一个好的选项卡并删除当前的选项卡。

我的问题是:

  1. 如何有效地做到这一点?
  2. 使用任何其他类型的小部件会更好吗?
  3. 在 Qt 设计器中,是否可以一个接一个地定义多个小部件,然后将好的小部件推到前面。如果是,如何?以及如何编辑和更改其中任何一个?
  4. 如果使用RemoveTab,如何在选项卡上使用指针而不是索引?

我使用 PyQt4

【问题讨论】:

  • 您可以只创建一个 QTabwidget 并根据需要添加/删除选项卡吗?您似乎在问这是否可能,是的,这当然是可能的。您应该在pyqt.sourceforge.net/Docs/PyQt4/qtabwidget.html 阅读有关 QTabwidgets 的信息。您可以使用 insertTab()removeTab() 方法插入/删除选项卡。
  • @ballsdotballs:感谢分享链接。通常我会在提问之前研究所有我能找到的东西。从我的帖子中可以明显看出,由于索引,我认为添加和删除是一种非优雅的解决方案,我询问了如何在已删除选项卡上保存指针以供以后添加。
  • 如果您希望一次只显示一个选项卡,而用户永远看不到其他选项卡,为什么还要使用选项卡小部件?为什么不只拥有 N 个不同的小部件,并且只显示您希望用户看到的那个。或者下面的@ekhumoro 的解决方案,它将小部件分成页面。但是您仍然需要添加/删除页面,而您似乎不想这样做。
  • 我选择 Qtabwidget 是因为它很容易逐个编辑选项卡:我想避免使用 tabwidget 但我不知道如何在 Qt 设计器中制作(或编辑)重叠的小部件并显示在前面我想要的:

标签: python pyqt qt-designer qtabwidget


【解决方案1】:

使用QStackedWidget,它与标签小部件完全相同,但没有标签栏(您不需要)。

这个小部件在 Qt Designer 中可用。上下文菜单有几个用于添加/删除页面等的命令。请注意,右上角的箭头按钮只是为了方便起见:它们不会出现在您的应用程序中。

可以在运行时使用addWidget/removeWidget添加/删除页面:

index = self.stack.addWidget(self.page1)
self.stack.removeWidget(self.page1)

您可以使用索引或小部件引用访问页面。

【讨论】:

    【解决方案2】:

    我看到这个帖子有点老了。但我希望这仍然会有所帮助。 您可以使用 remove() 方法“隐藏”选项卡。没有办法真正将它们隐藏在 pyqt4 中。当你删除它时,它就从 ui 中消失了。但是在后端,具有您所有设置的选项卡对象仍然存在。我相信你可以找到一种即兴创作的方法。试试看!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多