Pyside 在 QtabWidget 中获取一个小部件

Pyside getting a widget inside a QtabWidget

我有一个 QtabWidget,我在该 tabwidget 中创建了一个 ListWidget

self.tabWidget = QtGui.QTabWidget(self.centralwidget)
self.listWidget = QtGui.QListWidget(self.tabWidget)

然后我做了一个标签:

self.tab1 = QtGui.QWidget()
self.tabWidget.addTab(self.tab1,"hi")

我想要做的是获取 tab1 的内部 QTabWidget 的列表视图。

print self.tabWidget.currentWidget()

它打印出一个指针: PySide.QtGui.QWidget 对象位于 0x0000000004EA84A4 我想要 QListWidget,这样我就可以调用 addItem 等函数。

编辑:我还有一个问题。我正在使用 Pyside 并且有一个名为 retranslateUI 和 setupUI 的函数。我想为我的 QTabWidget 添加信号,

self.tabWidget.currentChanged.connect(self.showStreamList(self.tabWidget.tabText(self.tabWidget.currentIndex())))

但我不确定该放在哪里。我将它放在 retranslateUI 中,因为 button.clicked.connects 在那里,但是当我 运行 程序时,我认为它首先执行此命令。 GUI甚至不显示。一般来说,我应该将这些 signals/event 个听众分组在哪里?

考虑到您的评论,您似乎想要将 QListWidgets 动态添加到 QTabWidget 并希望单独访问每个 QListWidget。

QTabWidget 的 addTab() 方法接受一个 QWidget 和一个字符串作为它的参数。顾名思义,QListWidget 是从 QWidget 派生/子类化的。因此,addTab() 方法将接受一个 QListWidget,如果你传递一个。所以 self.tabWidget.addTab(self.listWidget,"hi") 应该可以正常工作。

接下来,访问它们。 QTabWidget 有一种通过索引访问任何选项卡的方法,明智地称为 widget(index)。因此,如果你想访问第 n 个小部件,你可以通过调用 self.tabWidget.widget(n).

来获取它

因此您可以获得任何列表小部件并使用它做一些事情:

lw = self.tabWidget.widget(0) # get the 0th widget
lw.addItem(...)