Qt之QHostInfo
QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址,或者与一个IP地址相关联的主机名。这个类提供了两个静态的便利函数:一个以异步方式工作,一旦找到主机就发射一个信号;另一个以阻塞方式工作,并且最终返回一个 QHostInfo 对象。
要使用异步方式查询主机的 IP 地址,调用 lookupHost() 即可,该函数包含 3 个参数,依次是:主机名/ IP 地址、接收的对象、接收的槽函数,并返回一个查询ID。以查询ID为参数,通过调用 abortHostLookup() 函数的来中止查询。
当获得查询结果后就会调用槽函数,查询结果被存储到 QHostInfo 对象中。可通过调用 addresses() 函数来获得主机的 IP 地址列表,同时可通过调用 hostName() 函数来获得查询的主机名。
QString strLocalHostName = QHostInfo::localHostName(); qDebug() "Local Host Name:" strLocalHostName;
输出结果:
使用 lookupHost() ,实际的查询在一个单独的线程中完成,利用操作系统的方法来执行名称查找。
int nID = QHostInfo::lookupHost("qt-project.org", this, SLOT(lookedUp(QHostInfo))); void MainWindow::lookedUp(const QHostInfo host) if (host.error() != QHostInfo::NoError) { qDebug() "Lookup failed:" host.errorString(); return; foreach (const QHostAddress address, host.addresses()) { // 输出IPV4、IPv6地址 if (address.protocol() == QAbstractSocket::IPv4Protocol) qDebug() "Found IPv4 address:" address.toString(); else if (address.protocol() == QAbstractSocket::IPv6Protocol) qDebug() "Found IPv6 address:" address.toString(); else qDebug() "Found other address:" address.toString(); }
输出结果:
Found IPv4 address: “5.254.113.102”
Found IPv4 address: “178.32.152.214”
int nID = QHostInfo::lookupHost("5.254.113.102", this, SLOT(lookedUp(QHostInfo))); void MainWindow::lookedUp(const QHostInfo host) if (host.error() != QHostInfo::NoError) { qDebug() "Lookup failed:" host.errorString(); return; qDebug() "Found hostName:" host.hostName(); }
输出结果:
QHostInfo host = QHostInfo::fromName("5.254.113.102"); if (host.error() != QHostInfo::NoError) { qDebug() "Lookup failed:" host.errorString(); return; qDebug() "Found hostName:" host.hostName();
输出结果:
这种情况下,名称查询的执行与调用者处于相同的线程中。这对于非 GUI 应用程序或在一个单独的、非 GUI 线程中做名称查找是比较有用的(在 GUI 线程中调用这个函数可能会导致用户界面冻结)。
lookupHost() 查询主机信息时,会返回一个查询 ID,以此 ID 为参数,通过调用 abortHostLookup() 来中止查询:
如果查询失败,error() 返回发生错误的类型,errorString() 返回一个能够读懂的查询错误描述。
枚举 QHostInfo::HostInfoError:
QTimeLine 类提供了用于控制动画的时间轴,通常用于通过定期调用一个槽函数来动画一个 GUI 控件。 相信了解动画的人对帧应该不陌生,可以把一个动画想象成由很多张静态画面组成,而每一个画面就是一帧图像。每隔一定时间间隔就显示一帧图像,当该间隔较短时,人眼就感觉不出来了,觉得看到的是连续的影像。
QFuture 允许线程与一个或多个结果同步,这些结果将在稍后的时间点准备就绪,该结果可以是具有默认构造函数和拷贝构造函数的任何类型。如果一个结果在调用 result()、resultAt() 或 results() 函数时不可用,QFutur
QDateEdit和QTimeEdit均继承自QDateTimeEdit,许多特性和功能都有QDateTimeEdit提供。这些都是相关属性:
QLocalServer可以接受来自本地socket的连接。通过调用listen(),让server监听来自特定key的连接。 调用nextPendingConnection()来接受一个挂起(等待)的连接作为一个已连接的QLocalSocket。函数返一个QLocalSocket指针,可以被
现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。
相关文章
- Qt Creator介绍
- Qt-error C3872: “0x3000”: 此字符不允许在标识符中使用
- QT小例子 ---文件查找
- Qt编写自定义控件58-直方对称图
- Qt编写自定义控件插件开放动态库dll使用(永久免费)
- Qt编写的项目作品18-数据导入导出(xls/pdf)及打印示例
- Qt编写安防视频监控系统12-异形布局
- Qt编写地图综合应用46-设备点位(添加、删除、清空、重置)
- Qt安卓开发经验001-010
- Qt系列文章033-QThread信号量线程同步
- 在Qt(C++)中使用QThread实现多线程
- Qt FFmpeg 音视频播放器
- 【Qt】针对 5.15 及以上版本在线安装教程
- 雕刻效果的实现【OpenCV+QT】
- Qt判断当前系统
- Qt--信号槽传递自定义结构体参数