我正在尝试在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地址?
这不是一个“问题”,因为:
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中显示它。
使用system()
很丑陋,除非您要编写一个一次性项目,否则应考虑使用QNetworkInterface
类来执行此操作。
尝试此代码:
QNetworkInterface