在 Raspberry Pi 上使用 qt 显示 ipaddress
Display ipaddress using qt on Raspberry Pi
我正在尝试在 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 地址?
那不是 "problem",因为:
QString::number(system("hostname -I"));
returns "0"(很可能是因为 system("hostname -I")
命令结果为 0),所以 QTextEdit
显示 0
.
请注意,当您 运行 一个进程时:
- 它returns 一个整数形式的退出代码(
main
函数返回值)。在大多数情况下,0 表示成功,其他任何情况都表示失败。
- 它向标准输出显示一些信息(发送到
std::cout
的内容)。
因此,当您调用 system("hostname -I"))
它 returns 0 如果成功,然后您需要解析其标准输出以找到打印在此处的 IP 地址。
您可以通过使用 QProcess
或将其重定向到文件然后读取文件来捕获调用的标准输出(system("hostname -I > ip.txt")
可能有效,待测试)
或者,要以文本形式获取您的 IP 地址,最好使用 QNetworkInterface, check this post,然后您可以在 QTextEdit 中显示它。
使用 system()
很丑陋,除非您编写的是一次性项目,否则您应该考虑使用 QNetworkInterface
class 来执行此操作。
试试这个代码:
for (QHostAddress address: QNetworkInterface::allAddresses())
if (address.protocol() == QAbstractSocket::IPv4Protocol)
IPAddress->append(address.toString());
我正在尝试在 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 地址?
那不是 "problem",因为:
QString::number(system("hostname -I"));
returns "0"(很可能是因为 system("hostname -I")
命令结果为 0),所以 QTextEdit
显示 0
.
请注意,当您 运行 一个进程时:
- 它returns 一个整数形式的退出代码(
main
函数返回值)。在大多数情况下,0 表示成功,其他任何情况都表示失败。 - 它向标准输出显示一些信息(发送到
std::cout
的内容)。
因此,当您调用 system("hostname -I"))
它 returns 0 如果成功,然后您需要解析其标准输出以找到打印在此处的 IP 地址。
您可以通过使用 QProcess
或将其重定向到文件然后读取文件来捕获调用的标准输出(system("hostname -I > ip.txt")
可能有效,待测试)
或者,要以文本形式获取您的 IP 地址,最好使用 QNetworkInterface, check this post,然后您可以在 QTextEdit 中显示它。
使用 system()
很丑陋,除非您编写的是一次性项目,否则您应该考虑使用 QNetworkInterface
class 来执行此操作。
试试这个代码:
for (QHostAddress address: QNetworkInterface::allAddresses())
if (address.protocol() == QAbstractSocket::IPv4Protocol)
IPAddress->append(address.toString());