一、环境介绍
Qt: 5.12.6
操作系统: win10 (64位)
功能: 域名解析(域名转IP)
三、核心代码
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } /* 工程: SmartHome 日期: 2021-04-26 作者: DS小龙哥 环境: win10 QT5.12.6 MinGW32 功能: 日志显示 */ void Widget::Log_Text_Display(QString text) { QPlainTextEdit *plainTextEdit_log=ui->plainTextEdit_log; //设置光标到文本末尾 plainTextEdit_log->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); //当文本数量超出一定范围就清除 if(plainTextEdit_log->toPlainText().size()>1024*4) { plainTextEdit_log->clear(); } plainTextEdit_log->insertPlainText(text); //移动滚动条到底部 QScrollBar *scrollbar = plainTextEdit_log->verticalScrollBar(); if(scrollbar) { scrollbar->setSliderPosition(scrollbar->maximum()); } } //当解析成功域名后,会调用lookedUp槽函数 void Widget::lookedUp(const QHostInfo &host) { if (host.error() != QHostInfo::NoError) { Log_Text_Display(host.errorString()+"\n"); return; } foreach (QHostAddress address, host.addresses()) { Log_Text_Display(address.toString()+"\n"); } } /* 工程: IP_Addr_Analysis 日期: 2021-06-01 作者: DS小龙哥 环境: win10 QT5.12.6 MinGW32 功能: 域名解析 */ void Widget::on_pushButton_ip_get_clicked() { //先调用 命令nslookup解析域名,再调用QHostInfo解析,有些域名QHostInfo解析不了。 //多此一举使用QHostInfo的原因是,懒得解析字符串,QHostInfo信号里直接读取IP地址。 QProcess process; process.start(QString("nslookup %1").arg(ui->lineEdit_ip_name->text())); process.waitForFinished(5000); Log_Text_Display(process.readAll()+"\n"); QHostInfo::lookupHost(ui->lineEdit_ip_name->text(),this, SLOT(lookedUp(QHostInfo))); } /* 工程: IP_Addr_Analysis 日期: 2021-06-01 作者: DS小龙哥 环境: win10 QT5.12.6 MinGW32 功能: 清除数据 */ void Widget::on_pushButton_clean_clicked() { ui->plainTextEdit_log->clear(); }
3.2 widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QHostInfo> #include <QScrollBar> #include <QPlainTextEdit> #include <QProcess> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); private slots: void lookedUp(const QHostInfo &host); void Log_Text_Display(QString text); void on_pushButton_ip_get_clicked(); void on_pushButton_clean_clicked(); private: Ui::Widget *ui; }; #endif // WIDGET_H