天天看点

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类的对象中,通过该对象处理并获得笑话内容

主要代码:

/

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

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

showHttp(QNetworkReply*reply)

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);      

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;
}