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

问题描述 投票:0回答:2

是否可以获取列表中

QTabWidget
中由addTab(QWidget()添加的所有选项卡小部件。

我们可以使用

self.findChildren(QWidget)
,但它也会返回其内部的所有其他小部件,并且无法过滤它们。

qt pyqt qtabwidget
2个回答
41
投票

更仔细地阅读您指出的文档:-)

QTabWidget
有一个
QWidget *widget(int index)
方法,返回索引
index
处的选项卡。用它来获取选项卡小部件。该类还有一个
int count();
告诉您有多少个选项卡。

有了这两个,您可以非常轻松地迭代所有选项卡。


0
投票

我终于让它发挥作用了。将 setCentralWidget 从 tabs 更改为 tabWidget 纠正了所有错误。选项卡呈现了我在 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()
© www.soinside.com 2019 - 2024. All rights reserved.