Pyside 在 QtabWidget 中获取小部件
Posted
技术标签:
【中文标题】Pyside 在 QtabWidget 中获取小部件【英文标题】:Pyside getting a widget inside a QtabWidget 【发布时间】:2015-02-19 19:40:46 【问题描述】:我有一个 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")
我想要做的是在 QTabWidget 中为 tab1 获取列表视图。
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 甚至不显示。一般来说,我应该将这些信号/事件侦听器分组到哪里?
【问题讨论】:
您将 QTabWidget 设置为 QListWidget 的父对象。 QTabWidget 无法知道谁是它的子类。 currentWidget() 返回 QTabWidget 中当前处于活动状态的小部件,如果同时不添加任何其他小部件,则为 tab1。我认为您正在尝试实现一些不同的东西,我在这里看不到。请提供更多有关您正在尝试做的事情的背景信息。是否要将 QListWidget 作为选项卡添加到 QTabWidget? 是的,这就是我想要做的。我试图让用户能够添加更多选项卡,并且每个选项卡都有一个 QListWidget,但根据选项卡,我想在列表中显示不同的内容。这意味着我必须为选项卡获取特定的小部件 如果我的回答解决了您的问题,请点击旁边的勾将其标记为“已接受”。 【参考方案1】:考虑到您的评论,您似乎希望将 QListWidgets 动态添加到 QTabWidget 并希望单独访问每个 QListWidget。
QTabWidget 的 addTab() 方法接受一个 QWidget 和一个字符串作为它的参数。顾名思义,QListWidget 是从 QWidget 派生/子类化的。因此,addTab()
方法将接受一个 QListWidget,如果你传递它的话。所以self.tabWidget.addTab(self.listWidget,"hi")
应该可以正常工作。
接下来,访问它们。 QTabWidget 有一个通过索引访问任何选项卡的方法,称为widget(index)
。因此,如果您想访问n
-th 小部件,可以通过调用self.tabWidget.widget(n)
来获取。
因此,您可以获取任何列表小部件并用它做一些事情:
lw = self.tabWidget.widget(0) # get the 0th widget
lw.addItem(...)
【讨论】:
这行得通,谢谢!您将如何获得当前选项卡?我正在尝试获取选项卡的名称。 tabWidget.tabText(index) 获取选项卡的文本,而 tabWidget.currentIndex() 获取当前活动选项卡的索引。以上是关于Pyside 在 QtabWidget 中获取小部件的主要内容,如果未能解决你的问题,请参考以下文章
仅为 QTabWidget 中的选项卡显示工具提示,而不是整个小部件