【问题标题】:How to set current tab of QTabWidget by name?如何按名称设置 QTabWidget 的当前选项卡?
【发布时间】:2018-01-31 09:07:26
【问题描述】:

PyQt5 的QTabWidget 有一个方法setCurrentIndex,您可以使用该方法将特定选项卡变为活动选项卡。我似乎找不到任何方法来按选项卡名称进行索引(我在 Qt Designer 中设置)。有没有办法(直接或间接)按名称索引?

http://doc.qt.io/qt-5/qtabwidget.html#currentIndex-prop

【问题讨论】:

    标签: qt pyqt pyqt5 qtabwidget


    【解决方案1】:

    选项卡名称成为设置为选项卡页面的小部件的对象名称。添加选项卡后,页面将自动重新设置为选项卡小部件的内部堆栈小部件。这意味着您可以像这样获得对页面的引用:

    page = tabwidget.findChild(QWidget, tabname)
    

    并像这样获取它的索引:

    index = tabwidget.indexOf(page)
    

    或直接按名称设置当前选项卡,如下所示:

    tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
    

    【讨论】:

      【解决方案2】:

      另一种方法是在添加选项卡时记住选项卡的索引。然后稍后在您的代码中重用它:

      index = tabWidget.addTab(myWidget)
      // ...
      tabWidget.setCurrentIndex(index)
      

      【讨论】:

        【解决方案3】:

        给定 tab_name 的方法返回名称与 tab_name 匹配的选项卡的索引列表。

        def get_indices(tab_name):
            return [index for index in range(tab_widget.count())
                if tab_name == tab_widget.tabText(index)]
        

        用这个函数找到索引后,就可以使用标准的 PyQt 方法了。

        不是最好的方法,但有时可能有用。

        【讨论】:

          【解决方案4】:

          你可以像这样使用indexOf()

          删除你的标签:

          self.tabWidget.removeTab(self.tabWidget.indexOf(self.YOUR_TAB_name))
          

          添加您的标签:

          self.tabWidget.addTab(self.YOUR_TAB_name, "name"))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-21
            • 2018-04-11
            • 1970-01-01
            • 1970-01-01
            • 2011-01-30
            相关资源
            最近更新 更多