findChild返回带有自定义widge的None

2024-03-29 09:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python创建了一个定制的Qt小部件,并设法在运行时将其加载到表单中,但是当我尝试使用findChild从表单实例中获取它时,我得到了None。在

小部件已加载,如果我打印出表单上的名称和对象,我可以看到它:

DEBUG:root:<PyQt4.QtGui.QCheckBox object at 0x11358030>
DEBUG:root:Near_Other_Infrastructure
DEBUG:root:<PyQt4.QtGui.QCheckBox object at 0x113582B8>
DEBUG:root:photo
DEBUG:root:<imagewidget.QMapImageWidget object at 0x113586A8>

代码如下:

^{pr2}$

更新:

似乎这样做有效:

images = self.forminstance.findChild(QWidget, "photo")

它返回DEBUG:root:<imagewidget.QMapImageWidget object at 0x113586A8>

虽然我更希望通过类型而不使用名称来获取控件。在

有什么想法吗?在


Tags: debug名称表单object部件rootqtat
1条回答
网友
1楼 · 发布于 2024-03-29 09:30:07

我也有这个问题。在

一个简单的解决方案是找到一个非自定义基类和强制转换。在

Custom* ptr = dynamic_cast<QWidget*>(root->findChild<QWidget*>("MyWidgetName"));
if (ptr)
{
    //...whatever
}

相关问题 更多 >