crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QListWidget
WindStorm
  опции профиля:
сообщение 8.2.2011, 10:48
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.2.2011
Пользователь №: 2396

Спасибо сказали: 1 раз(а)




Репутация:   0  


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2022, 4:33