在Raspberry Pi上使用qt显示ipaddress

时间:2015-10-30 11:02:30

标签: qt raspberry-pi ip-address

我试图在QTextEdit框中显示Raspberry Pi的IP地址;

onCreateView(...)

问题是这会将IP地址显示为0。

如何让它显示实际的IP地址?

3 个答案:

答案 0 :(得分:1)

这不是"问题",因为:

QString::number(system("hostname -I")); 

返回" 0" (很可能是因为system("hostname -I")命令结果为0),因此QTextEdit显示0

请注意,当您运行流程时:

  • 它返回退出代码(main函数返回值)作为整数。在大多数情况下,0意味着它成功,其他任何意味着它失败。
  • 它会向标准输出显示一些信息(发送给std::cout的内容)。

因此,当您调用system("hostname -I"))时,如果成功则返回0,然后您需要解析其标准输出以查找此处打印的IP地址。

您可以使用QProcess或将其重定向到文件,然后阅读文件(system("hostname -I > ip.txt")可能有效,待测试)来捕获呼叫的标准输出

或者,要将您的IP地址作为文字,最好使用QNetworkInterface,检查this post,然后您就可以在QTextEdit中显示它。

答案 1 :(得分:1)

使用system()很难看,除非您正在编写一次性项目,否则应考虑使用QNetworkInterface类来执行此操作。

答案 2 :(得分:0)

尝试此代码:

 for (QHostAddress address: QNetworkInterface::allAddresses())
    if (address.protocol() == QAbstractSocket::IPv4Protocol)
       IPAddress->append(address.toString());