【问题标题】:PySide Qt4 widget exchange in a hboxlayout在 hboxlayout 中进行 PySide Qt4 小部件交换
【发布时间】:2009-11-21 20:30:02
【问题描述】:

我想在 QHBoxLayout 中交换一个小部件。这段代码似乎可以工作,但只要我执行实际的app._exec(),代码就会与terminate called after throwing an instance of 'boost::python::error_already_set' 一起崩溃。有没有办法得到实际的错误信息? (或解决这个问题)

gaParent = gameArea.parent().layout()
gaParent.removeWidget(gameArea)
gameArea = DrawingScreen()
gameArea.setObjectName("gameArea")
gaParent.insertWidget(0, gameArea)

【问题讨论】:

  • 当您不删除 gameArea 时,它是否有效?更新引用时可能出现问题...您是否尝试过调用gameArea.setParent(None) 调用gameArea.destroy()gameArea.deleteLater()

标签: qt4 widget pyside


【解决方案1】:

我是一个 C++ 人,而不是一个 Pythonist,如果这没有意义,请原谅。但是,从我的角度来看,它看起来好像 gameArea.parent().layout() 返回了一个 QLayout。该对象没有 insertWidget 方法。

除此之外,我不确定 boost::python::error_alread_set 的来源。你能做一些智能打印来尝试确定什么时候出现 boost 错误吗?

【讨论】:

  • 是的——它是一个 QLayout,但完全是一个 QHBoxLayout(这里不需要强制转换)。不幸的是,我认为我无法访问其他任何内容 - app._exec() 之前没有错误,然后内部出现故障,所以我无法以任何方式捕获它 - 整个应用程序就退出了。
  • 除了Qt你还用什么?据我所知,Qt 不是基于 boost...(询问非 Python 专家)
  • e8johan: 到 qt4 的 pyside 接口是使用 boost 生成的
猜你喜欢
  • 2015-10-29
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2017-10-31
相关资源
最近更新 更多