2011-11-28 220 views
0

我正面临pyQT的一个问题。 所以我创建了一个包含QTabWidget的设计器的图形界面。 事情是我想隐藏和显示标签时,我的功能正在运行。我发现了一个解决方案,包括删除所有选项卡并稍后添加它们。 可以说,我只有两个选项卡:在QTabWidget(PyQT)中添加已删除的选项卡

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. 

有什么建议?

+0

其实它不够清楚。你为什么“删除所有选项卡并稍后添加它们”?你为什么不声明你需要的所有选项卡,并在需要时调用它们,并在不再需要它们时将它们从索引中删除? –

+0

首先,我只想隐藏一些标签并在我的功能的精确时刻显示它们。由于没有隐藏/显示选项卡的方法,我发现该解决方案可以删除我在.ui中创建的选项卡(不删除它们)。 – NicoCati

回答

2

你可以声明你在主窗口的对象或任何窗口小部件所需要的所有选项卡,你有: 例:

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) 

同样的标签,可以象你想被称为多次。 我认为这种方式非常干净简单。 如果这不符合您的需求,请让我知道。

+0

嗯,事情是我必须在.ui文件中分别构建我的小部件。所以这就是为什么我需要在运行我的功能之前创建所有的选项卡。 不管怎样,我想你的解决方案,但我得到这个消息: – NicoCati

+0

QCoreApplication :: sendPostedEvents:不能发送发布事件的对象在另一个线程 QCoreApplication :: sendPostedEvents:不能发送的对象发布的事件在另一个线程 QCoreApplication :: sendPostedEvents :无法发送另一个线程中的对象的发布事件 QObject :: setParent:无法设置父项,新父项在不同线程中 QCoreApplication :: sendPostedEvents:无法发送另一个线程中的对象的发布事件 – NicoCati

+0

QCoreApplication :: sendPostedEvents:无法发送在另一个线程中发布对象的事件 :X服务器上的致命IO错误11(需要临时解决方法):0.0。 我有点失落。 :/ – NicoCati

相关问题