Воообщем такое дело - мне сказали что надо переделать мою прогу, чтобы она работала по принцыпу MVC.
Я всё реализовывал через QListWidget, который содержит мноя созданные виджеты.
у меня три .cpp файла: main, list, custom_widget.
Main.cpp самый обычный.
В List.cpp такой код:
listWidget = new QListWidget(this);
QVBoxLayout *layout = new QVBoxLayout(this);
QHBoxLayout *hboxLayout = new QHBoxLayout;
hboxLayout->addWidget(listWidget);
layout->addLayout(hboxLayout);
fetch("http://rss.news.yahoo.com/rss/yahoonewsroom");
...
void List::parseXml()
{
int a = 0;
...
{
listWidget->insertItem(a, "");
listWidget->setItemWidget(listWidget->item(a), new Custom_Widget(titleString, dateString, aboutString, pictureString));
listWidget->item(a)->setSizeHint(QSize (350,470));
a = a + 1;
}
...
}
В custom_widget.cpp такой код:
Custom_Widget::Custom_Widget(QString name_par, QString date_par, QString about_par, QString picture_par, QWidget *parent)
: QWidget(parent)
{
imageLabel = new QLabel;
name = new QLabel(name_par);
date_par.chop(9);
date = new QLabel(date_par);
int asd = about_par.length();
if (asd>200)
{
about_par.chop(asd-200);
about_par.replace("\n\n", "\n");
about_par.append("...");
}
about_par.replace("\n\n", "\n");
about_par.append("...");
about = new QLabel(about_par);
name->setWordWrap(true);
date->setWordWrap(true);
about->setWordWrap(true);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->insertWidget(0, name, 0);
layout->insertWidget(1, date, 0);
layout->insertWidget(2, about, 0);
layout->insertWidget(3, imageLabel, 1);
QUrl url(picture_par);
http = new QHttp(this);
connect(http, SIGNAL(requestFinished(int, bool)),this, SLOT(Finished(int, bool)));
buffer = new QBuffer(&bytes);
buffer->open(QIODevice::WriteOnly);
http->setHost(url.host());
Request=http->get(url.path(),buffer);
this->setFixedHeight(470);
}
...
Как переделать этот код, чтобы он стал считаться примером MVC?
Надо ли все переписывать через QListView и там использовать модели, делегаты и т.д.?