crossplatform.ru

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

kibsoft
  опции профиля:
сообщение 27.2.2010, 23:19
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Взял пример написания новой модели из документации и изменил QStringList на QList<Connection*>. Connection - наследник QTcpSocket.

QVariant ConnectionModel::data(const QModelIndex &index, int role) const
 {
     if (!index.isValid())
         return QVariant();

     if (index.row() >= peers.size())
         return QVariant();

     if (role == Qt::DisplayRole)
         return peers.at(index.row())->name();//вот тут возвращаю имя пира QString, но в ListView не появляются данные.
     else
         return QVariant();
 }


Что неправильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 27.4.2010, 11:53
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(azure @ 27.4.2010, 11:42) *
что нижележащие данные изменились?
что значит ниже лежащие?

Вот когда данные в модели изменились, она посылает сигнал dataChanged()
Цитата(azure @ 27.4.2010, 11:42) *
Модель, как я понял, должна быть оповещена об изменении данных при помощь setData(),
не правильно понял, для представления модель и является источником данных, а где она их берёт представлению безразлично. Метод setData() не оповещает модель, а устанавливает данные в ней (что следует из названия метода)

Цитата(azure @ 27.4.2010, 11:42) *
Вы там что-то говорили про "раздельчик маленький про изменение размеров модели". Покажите, где это, что-то не могу найти. Заранее спасибо.
читай всё и не пропустишь соответствующий раздельчик.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
azure
  опции профиля:
сообщение 27.4.2010, 14:45
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 24.12.2009
Пользователь №: 1332

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.4.2010, 11:53) *
что значит ниже лежащие?

Есть класс PlotCurve, каждый из которых содержит QString name. Объекты создаются при помощи new, указатели помещаются в QList<PlotCurve*>.
Сделал модель (subclass от QAbstractListModel) - PlotCurveModel.

QVariant PlotCurveModel::data(const QModelIndex &index, int role) const {
    QVariant val;
    //curveList is QList<PlotCurve*>
    val.setValue(curveList->at(index.row())->getName());
    qDebug()<<"PlotCurve name at index"<<index.row()<<"is"<<val.toString();
    return val;
}

int PlotCurveListModel::rowCount(const QModelIndex &parent) const {
    return curveList->count();
}


Вызываются обе эти функции, с помощью qDebug я удостоверился что возвращаемый QVariant содержит строку с именем нужной PlotCurve.

Цитата(Litkevich Yuriy @ 27.4.2010, 11:53) *
Вот когда данные в модели изменились, она посылает сигнал dataChanged()

Пробовал, вид не обновлялся почему-то. Видимо, у меня есть какаято бяка в коде. Есть гденить рабочие примеры с наследованием моделей и с изменением данных?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 23.7.2025, 18:11