前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt-网络编程

Qt-网络编程

作者头像
kdyonly
发布2023-03-03 19:38:47
5020
发布2023-03-03 19:38:47
举报
文章被收录于专栏:个人编程笔记个人编程笔记

浏览量 1

在QT的网路模块中提供了网络编程的相关接口来实现http的访问,其中包含了一些低级的类:QTcpSocket、QTcpServer和QUdpSocket,和一些高级的类:QNetworkRequest、QNetworkReply和QNetworkAccessManager,我们现在主要使用这些高级的类来实现网页的获取。

实现简单网页获取,我们可以创建一个控制台程序来获取一些数据。主要是在这个文件中加入network,就可以进行网络编程了。

代码语言:javascript
复制
//qtspider.pro
QT += core network 
QT -= gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
CONFIG += c++11 
TARGET = qtspider 
CONFIG += console 
CONFIG -= app_bundle 
TEMPLATE = app 
SOURCES += main.cpp 
HEADERS +=
代码语言:javascript
复制
//main.cpp
#include <QApplication>
#include <QtNetwork>
#include <QDebug>
#include <QString>
#include <QWidget>
#include <stdio.h>
class qtspider:public QWidget 
{    
    Q_OBJECT
public:    
    explicit qtspider(QWidget *parent = 0);
private slots:
    void replyfinish(QNetworkReply *);
private:
    QNetworkAccessManager *manager;
    QString *content; 
}; 
qtspider::qtspider(QWidget *parent) 
{    
    content = new QString();    
    manager=new QNetworkAccessManager(this);              connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyfinish(QNetworkReply *)));     
manager->get(QNetworkRequest(QUrl("http://www.jianshu.com/c/RfYyQj"))); 
}
//这里使用正则表达式来从获取网页中得到我们需要的数据,这里写的比较简单。
void qtspider::replyfinish(QNetworkReply *reply) 
{    
QString result=reply->readAll();    
QRegExp exp("<a class=\"title\" target=\"_blank\" href=\"(.*)\">(.*)</a>");    exp.setMinimal(true);    
int pos=0;    
while((pos=exp.indexIn(result,pos))!=-1){        
    qDebug()<<pos;        
    qDebug() << exp.cap(1);        
    qDebug()<<exp.cap(2);        
    pos += exp.matchedLength();    
}    
    reply->deleteLater(); 
}
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    qtspider *spider=new qtspider();
    return a.exec();
}
#include "main.moc"

最后这一段简单的代码获取的是简书散文主题当前页文章的标题,至于如何得到更多信息,还得研究一下,结果是这样的: 错误:undefined reference to "vtable for xxx"解决:这是由于将类写到了main.cpp里面,在文件的末尾加上

代码语言:javascript
复制
#include "main.moc"

关于这个错误的详细分析请参考以下这篇文章:http://blog.csdn.net/baymoon/article/details/1409167不知道有没有看简书的小伙伴,如果有并且想要学习关于c/c++相关知识的,可以在简书里面关注一个叫“天花板”的签约作者,最近看了一些关于他写的教程,很详细,很适合学习,而且现在在搞一个教学活动,有兴趣的可以去看下,这并不是广告,只是觉得写的很不错,适合爱学习的孩子。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档