ウェブからRSS(XML)を読み込む。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qdebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
view(0),
contents("")
{
ui->setupUi(this);
view = new QWebView(this);
setCentralWidget(view);
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://rss.sina.com.cn/roll/sports/hot_roll.xml")));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::replyFinished(QNetworkReply *reply)
{
if(reply->error() == QNetworkReply::NoError)
{
QDomDocument doc;
doc.setContent(reply->readAll());
channel = doc.firstChildElement().firstChildElement();
channelContent = channel.childNodes();
contents += "<style>.item{background:#f8f8f8; font-weight:bold; font-family: arial; margin:10px; font-size:14px;padding:5px;}.item:hover{background:#36b0f3;} .description:hover{color:#fff;} .title{color:#666;white-space:nowrap;} .description{color:#000; margin:0px 5px;}</style>";
for(unsigned int i = 0; i < channelContent.count(); i++)
{
if(channelContent.at(i).toElement().tagName() == "title")
{
//qDebug()<<"Element"<<channelContent.at(i).toElement().text();
contents += ("<div style=" font-weight:bold; font-family: arial; font-size:16px; text-align:center; height:20px; overflow:hidden;">"+channelContent.at(i).toElement().text()+"</div>");
}
else if(channelContent.at(i).toElement().tagName() == "item")
{
contents += "<div class="item">";
channelContentList = channelContent.at(i).childNodes();
for(unsigned int j = 0; j < channelContentList.count(); j++)
{
if(channelContentList.at(j).toElement().tagName() == "title")
{
qDebug()<<"Element"<<channelContentList.at(j).toElement().text();
contents += ("<div class="title">"+channelContentList.at(j).toElement().text()+"</div>");
}
else if(channelContentList.at(j).toElement().tagName() == "description")
{
qDebug()<<"Description"<<channelContentList.at(j).toElement().text();
contents += ("<div class="description">"+channelContentList.at(j).toElement().text()+"</div>");
}
else if(channelContentList.at(j).toElement().tagName() == "pubDate")
{
qDebug()<<"Description"<<channelcontentlist at="" j="" toelement="" text="" ui-="">webView->append(""+channelContentList.at(j).toElement().text()+"");
}
else
{
}
}
contents += "</channelcontentlist></div>";
}
}
view->setHtml(contents);
//qDebug()<<channelContent.count();
}
}
</qdebug>