获取QTabWidget中的所有选项卡小部件

24

有没有可能在列表中获取由QTabWidget中的addTab(QWidget()添加的所有选项卡小部件。

我们可以使用self.findChildren(QWidget),但它也会返回其内部的所有其他小部件,并且没有过滤它们的方法。

2个回答

41
请仔细阅读您指向的文档 :-) QTabWidget有一个QWidget *widget(int index)方法,该方法返回索引为index的选项卡。使用此方法可以获取选项卡小部件。该类还具有一个int count();,用于告诉您有多少个选项卡。
有了这两个方法,您可以轻松地遍历所有选项卡。

3
没错,它就躲在最后面。 - Qiao
对于(int i = 0; i < ui->yourTabWidget->count(); i++){ auto widget = ui->yourTabWidget->widget(i); } - Patrizio Bekerle

0
我终于让它正常工作了。将setCentralWidget从tabs改为tabWidget纠正了所有错误。Tabs显示的屏幕与我在QtDesiger中定义的不同。我删除了所有的调试代码。这是我修改后的代码。
import sys
from PyQt6.QtWidgets import QMainWindow, QApplication
from PyQt6 import QtWidgets
from PyQt6.uic import loadUi
# from PyQt6.QtWidgets import QTabWidget
# from PyQt6.QtCore import pyqtSignal as Signal, pyqtSlot as Slot


class MainUI(QMainWindow):

    def __init__(self):
        super(MainUI, self).__init__()   
        loadUi('D:/virtual1/AI-Project/AI_Main.ui', self)
    #    self.tabs = QTabWidget()
        self.setCentralWidget(self.tabWidget)
        self.tabWidget.currentChanged.connect(self.on_change)

    def on_change(self):
        num = self.tabWidget.currentIndex()
        print('num = ', num)
        if num == 0:
            print('Index 0')
        if num == 1:
            print('Index 1')
        if num == 2:
            print('Index 2')
        if num == 3:
            print('Index 3')


if __name__ == "__main__":
    # Allows You to Execute Code When the File Runs as a Script, but Not When It's Imported as a Module.
    app = QtWidgets.QApplication(sys.argv)
    window = MainUI()
    window.show()
    app.exec()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接