Qt读取当前计算机相关信息

Qt利用相关的模块实现对当前计算机相关信息的读取,由于读取的信息越多,调用的类和需要处理的信息越多,嗯,由于是一次尝试,因此这里只读取计算机的名称和计算机的IPV4地址

.pro头文件内部引入如下代码调用相关类,开始的时候并不知道,因为在引入相关头文件的时候出现错误,因此网上查了下,发现了这个问题,在这里解决一下

QT += network

此后需要引入下述的头文件

#include <QtNetwork/QHostInfo>

嗯,可能有点奇怪,为何没有.h?额,实际上不是所有的引用都有的,这里就没,但是引入之后,其支持的相关的能够使用就行

这里还需要注意的是,当然,在下面的代码里面能够得到体现,没有定义一个变量(指针类型也没有),而是直接的调用

QString info = QHostInfo::localHostName();

这里一句代码即可返回当前计算机的名称,当然还没有结束,后面的还是比较麻烦的,不过用的熟了也还行

QHostInfo admin = QHostInfo::fromName(info);

这里的admin并非字符串,就是QHostInfo 类的返回项,它实际上包括两个部分,但是由于这里只实现IPV4查看,因此不深究其它返回项

完整的槽函数代码如下

void MainWindow::on_HQ_clicked()
{


    QString info = QHostInfo::localHostName();
    ui->Info->clear();

    ui->Info->append("当前计算机名:"+info);

    QHostInfo admin = QHostInfo::fromName(info);
    foreach(const QHostAddress &stdio,admin.addresses())
    {
        if(stdio.protocol()==QAbstractSocket::IPv4Protocol)
        {
            ui->Info->append("IPV4:"+stdio.toString());
        }

    }

}

这里的foreach循环,遍历一波admin里面的相关项内容,只要地址内容就行了,这里需要注意的是,不但只取地址内容,而且只取IPV4地址,所以多了一个判断项

stdio.protocol()==QAbstractSocket::IPv4Protocol

其目的就是判断内容是否为IPV4地址类型吧,额,具体的原理我估计是枚举判断,因为IPV4的地址是有范围的!

将符合的显示出来即可(实际上就是IPV4了)

界面设计啥的就不说了,知道就好,嗯,也是闲暇之中的一个小的实现,试试Qt在这方面有啥好玩的,事实证明,没啥好玩的

对了,还抽时间做了个,同步电脑时间的表!调了个色,纯属好玩,这里也附上一波代码,有兴趣的可以参考

.exe安装包后续上传到我的Github端(我的新台式机还没安装Git,无法推送),有兴趣的阅读下篇博客有相应链接!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


皖ICP备2021003932号
召唤伊斯特瓦尔