在Raspberry Pi上使用qt显示ipaddress

问题描述 投票:0回答:3

我正在尝试在QTextEdit框中显示Raspberry Pi的Ip地址;

IPAddress = new QTextEdit("Current IP Address: \n", this);
QString tem = QString::number(system("hostname -I"));
IPAddress->append(tem);
IPAddress->setStyleSheet("QTextEdit{border: none;outline:none;border-image: none;}");
IPAddress->show();

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

如何获得此以显示实际的IP地址?

qt raspberry-pi ip-address
3个回答
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中显示它。


2
投票

使用system()很丑陋,除非您要编写一个一次性项目,否则应考虑使用QNetworkInterface类来执行此操作。


0
投票

尝试此代码:

QNetworkInterface
© www.soinside.com 2019 - 2024. All rights reserved.