在 QTabWidget (PyQT) 中添加已删除的选项卡
Posted
技术标签:
【中文标题】在 QTabWidget (PyQT) 中添加已删除的选项卡【英文标题】:Adding removed tabs in QTabWidget (PyQT) 【发布时间】:2011-11-28 16:01:08 【问题描述】:我遇到了 pyQT 的问题。 所以我用设计器创建了一个图形界面,包含一个 QTabWidget。 事情是我想在我的功能运行时隐藏和显示选项卡。我找到了一种解决方案,其中包括删除所有选项卡并稍后添加它们。 假设我只有两个标签:
removedTab = self._application.getAlgorithmGUI().getWidget('tabWidget_Verification').widget(1)
self._application.getAlgorithmGUI().getWidget( 'tabWidget_Verification' ).removeTab( 1 )
当我稍后尝试添加这个已删除的选项卡时,我的程序崩溃了。
self._application.getAlgorithmGUI().getWidget( 'tabWidget_Verification' ).addTab(removedTab,QString.fromUtf8("TabRemoved"))
这是我的错误信息:
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
<unknown>: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.0.
有什么建议吗?
【问题讨论】:
其实还不够清楚。为什么要“删除所有选项卡并稍后添加”?为什么不声明所有需要的选项卡并在需要时调用它们并在不再需要它们时将它们从索引中删除? 首先我只是想隐藏一些标签并在我的功能的精确时刻显示它们。由于选项卡没有隐藏/显示方法,因此我找到了删除我在 .ui 中创建的选项卡的解决方案(不删除它们)。 【参考方案1】:您可以在主窗口对象或您拥有的任何小部件中声明您需要的所有选项卡: 例如:
self.tab = QtGui.QWidget()
self.tab.setObjectName(_fromUtf8("tab"))
即使您尚未调用addTab()
方法,您也可以正常将小部件分配给您的选项卡。
例如:
self.lineEdit = QtGui.QLineEdit(self.tab)
必要时,您可以显示您的标签。 例如:
self.tabWidget.addTab(self.tab, "Label")
同样,您也可以从它的索引号中再次删除它。 例如:
self.tabWidget.removeTab(3)
可以根据需要多次调用同一个选项卡。 我认为这种方式非常干净和简单。 如果这不符合您的需求,请告诉我。
【讨论】:
好吧,我必须在 .ui 文件中单独构建我的小部件。这就是为什么我需要在运行函数之前创建所有选项卡的原因。无论如何,我尝试了您的解决方案,但收到此消息: QCoreApplication::sendPostedEvents:无法为另一个线程中的对象发送发布的事件 QCoreApplication::sendPostedEvents:无法为另一个线程中的对象发送发布的事件 QCoreApplication::sendPostedEvents:无法为另一个线程中的对象发送发布的事件QObject::setParent: 无法设置父级,新父级在不同的线程中 QCoreApplication::sendPostedEvents: 无法为另一个线程中的对象发送发布的事件 QCoreApplication::sendPostedEvents: 无法在另一个线程以上是关于在 QTabWidget (PyQT) 中添加已删除的选项卡的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4 菜单操作以将新选项卡添加到 QTabWidget