crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QListWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
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 и там использовать модели, делегаты и т.д.?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 24.4.2024, 0:46