Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ QListWidget

Автор: WindStorm 8.2.2011, 10:48

Воообщем такое дело - мне сказали что надо переделать мою прогу, чтобы она работала по принцыпу 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 и там использовать модели, делегаты и т.д.?

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)