linux下qt网络编程 qnetworkreply,【QT】网络编程_mb5fe5605983816的博客的技术博客_51CTO博客...

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

实现简单网页获取

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

#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 +=

//main.cpp

#include

#include

#include

#include

#include

#include

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("(.*)");    exp.setMinimal(true);

int pos=0;

while((pos=exp.indexIn(result,pos))!=-1){

qDebug()<

qDebug() << exp.cap(1);

qDebug()<

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"

最后这一段简单的代码获取的是简书散文主题当前页文章的标题,至于如何得到更多信息,还得研究一下,结果是这样的:

b6e5deb339f024e922cf4b721601fd49.png

错误:undefined reference to "vtable for xxx"

解决:这是由于将类写到了main.cpp里面,在文件的末尾加上

#include "main.moc"

关于这个错误的详细分析请参考以下这篇文章:

http://blog.csdn.net/baymoon/article/details/1409167

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值