在 PySide 中使用 QtHostinfo.lookupHost

Posted

技术标签:

【中文标题】在 PySide 中使用 QtHostinfo.lookupHost【英文标题】:Using QtHostinfo.lookupHost in PySide 【发布时间】:2012-09-21 15:37:01 【问题描述】:

我正在做一个项目,我想确认本地网络上是否存在主机。在 Qt 的 QtNetwork 包中,QHostInfo::lookupHost 方法是搜索主机的便捷方式,无需实现任何类型的 ping 或依赖于 ping 系统调用。它的异步调用可以方便地创建一个等待调用返回的对话框,并在对话框或主程序中使用一个槽来处理返回。

来自 Qt 的 QHostInfo 文档:

要异步查找主机的 IP 地址,请调用 lookupHost(),它将主机名或 IP 地址、接收器对象和插槽签名作为参数并返回一个 ID。您可以通过使用查找 ID 调用 abortHostLookup() 来中止查找...

当结果准备好时调用槽。结果存储在 QHostInfo 对象中。调用addresses() 获取主机的IP 地址列表,调用hostName() 获取查找的主机名。

PySide 的 QHostInfo 文档详细说明了 lookupHost 的用法,但我认为它可能会从 Qt 文档中自动生成,因为默认情况下,方法 lookupHost 在 @ 中声明为私有方法987654322@.

在 PySide 实现中将此方法声明为私有是否有特殊原因?它是否与调用的异步性质和 Python 的 GIL 有关?

【问题讨论】:

PySide 中缺少QHostInfo.lookupHost 的原因并不明显。函数 is 有 PyQt4。我建议在PySide mailing list 上询问。 @ekhumoro 那是我的下一步,但我想我会先在这里问一下,以防有人对此有一些经验。 【参考方案1】:

在没有收到 PySide 板的答复后,我更改了 QtNetwork 的 PySide 类型系统定义文件中的行,使其显示为:

<modify-function signature="lookupHost(QString,QObject*,const char*)" access="public"/>

重新编译 PySide 并没有问题

【讨论】:

以上是关于在 PySide 中使用 QtHostinfo.lookupHost的主要内容,如果未能解决你的问题,请参考以下文章

使用 PySide2 在 Qt-Designer 中嵌入 PyQtGraph

为啥在 pyside2 中,不能使用 QTranform mul QPointF?

如何在 PySide 中模块化创建属性

如何使用 pyside2 在 Qtableview 中显示(和格式化)日期时间数据

PySide/pyQt 在 QTableView 中显示数据

如何在 PySide2 中显示图像?