Qt example之 network joke

随机笑话网站感谢提供支持:http://520xq.com/

http://www.jokearea.com/


如果Qt程序需要需用network,必须要在.pro文件中添加QT+=network

QString::simplified();//删除文中全部空格

Qstring::remove(" ')//从去掉“ ”中的内容

Qstring::indexOf()//返回" "中索引所在位置(int)

QString::mid(x,y);//从x开始获取后面的y个字符。

添加网络获取笑话并显示功能:

设计思路:通过QNetworkAccessManger获取网页内容,并存储在一个Qstring类的对象中,通过该对象处理并获得笑话内容

主要代码:

/*发送requset*//

url=QString("http://www.jokearea.com/");

networkAccess->get(QNetworkRequest(QUrl(url)));//发送之后,在QNetworkAccessManger获取reply后会发送一个信号,

/*reply信号的槽函数*/

showHttp(QNetworkReply*reply)


/*QString对象处理网页内容*/

QTextStreamtextReader(reply);
QTextCodec*codec=QTextCodec::codecForName("U-TF8");
textReader.setCodec(codec);//转换显示中文

QStringcontent=textReader.readAll();

/*获取笑话*/

if((j=content.indexOf("<p>",0))!=-1){
if((i=content.indexOf("</p>",j-5,Qt::CaseInsensitive))!=-1){
joke=content.mid(j+3,i-j-3);
}

}

/****滚动条***/

scrollArea=newQScrollArea;
scrollArea->setWidget(label);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);


/**size的设定**/

label->setFixWidth(450);//限定宽度为450

每一次更新label:获取新的内容后需要调用

adjustSize();重新设置大小

label->adjustSize();


http://99tiantian.blog.163.com/blog/static/220056512011751435446/ xml资料

XML文件处理:

QStringjoke;
QTextStreamtextReader(reply);
QTextCodec*codec=QTextCodec::codecForName("GBK");
textReader.setCodec(codec);//转换显示中文
QStringcontent=textReader.readAll();
QXmlStreamReaderreader(content);
while(!reader.atEnd()){
reader.readNext();
if(reader.isStartElement()&&
reader.name()=="div"){//获取随机数对应的joke
joke=reader.attributes().value("div").toString();
break;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值