Pyside在QtabWidget中获取一个小部件

时间:2015-02-19 19:40:46

标签: python pyqt pyside

我有一个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和theres一个名为retranslateUI和setupUI的函数。我想为我的QTabWidget添加一个信号,

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

但我不知道该把它放在哪里。我把它放在retranslateUI中,因为那里有button.clicked.connects但是当我运行程序时,我认为它首先执行这个命令。 GUI甚至不显示。一般来说,我应该在哪里对这些信号/事件监听器进行分组?

1 个答案:

答案 0 :(得分:2)

考虑到您的评论,您似乎想要将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(...)
相关问题