如何按名称设置QTabWidget的当前选项卡?

时间:2017-08-22 23:38:28

标签: qt pyqt pyqt5 qtabwidget

PyQt5' QTabWidget有一个方法setCurrentIndex,您可以使用该方法将特定标签变为活动标签。我似乎找不到按标签名称索引的任何方法(我在Qt Designer中设置)。是否有任何方式(直接或间接)按名称索引?

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

4 个答案:

答案 0 :(得分:9)

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

page = tabwidget.findChild(QWidget, tabname)

并得到它的索引:

index = tabwidget.indexOf(page)

或直接按名称设置当前标签:

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

答案 1 :(得分:2)

另一种方法是添加标签时记住标签索引:

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

答案 2 :(得分:2)

给定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方法。

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

答案 3 :(得分:0)

您可以像这样使用indexOf()

删除标签:

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

添加标签:

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