QT应用编程: 域名解析(域名转IP)

举报
DS小龙哥 发表于 2021/12/09 22:58:14 2021/12/09
5.5k+ 0 0
【摘要】 一、环境介绍 Qt:  5.12.6 操作系统:  win10 (64位) 二、软件效果与功能介绍 功能:  域名解析(域名转IP) 三、核心代码 3.1 widget.cpp #include "widget.h"#include "ui_widget.h" Widget:...

一、环境介绍

Qt:  5.12.6

操作系统:  win10 (64位)

二、软件效果与功能介绍

功能:  域名解析(域名转IP)

三、核心代码

3.1 widget.cpp


      #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
  
 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/117446085

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。