Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Сентябрь 11, 2013, 10:21



Название: [Решено]QListView
Отправлено: demaker от Сентябрь 11, 2013, 10:21
Подскажите, как можно сделать
обновление данных во View?

Т.е.
Есть модель она привязана к корню.
Код
C++ (Qt)
lass ListBrowserModel: public QAbstractListModel
{
   Q_OBJECT
 
public:
   explicit ListBrowserModel(QObject*parent = 0);
   QVariant data(const QModelIndex &index, int role) const;
   int rowCount(const QModelIndex &parent) const;
   Qt::ItemFlags flags(const QModelIndex &index) const;
   void setRoot(QObject*);
 
   QObject *root;
   QList<QObject*> element_list;
};
 

Берем меняем корень
Код
C++ (Qt)
void setRoot(newRoot);
 

Как сделать чтобы во view отобразились новые данные?


Название: Re: QListView
Отправлено: Old от Сентябрь 11, 2013, 10:23
void QAbstractItemModel::modelReset() [signal]


Название: Re: QListView
Отправлено: demaker от Сентябрь 11, 2013, 10:28
void QAbstractItemModel::modelReset() [signal]

И как мне это поможет???
Сигнал высылается автоматически при обновлении модели?


Название: Re: QListView
Отправлено: Old от Сентябрь 11, 2013, 10:29
И как мне это поможет???
Модель должна эмитеть этот сигнал, когда нужно, что бы виев обновил все.


Название: Re: QListView
Отправлено: GreatSnake от Сентябрь 11, 2013, 10:31
В ListBrowserModel::setRoot() в самом начале вызови
Код
C++ (Qt)
QAbstractItemModel::beginResetModel();
,
а в конце
Код
C++ (Qt)
QAbstractItemModel::endResetModel();


Название: Re: QListView
Отправлено: demaker от Сентябрь 11, 2013, 10:38
Спасибо