Russian Qt Forum
Ноябрь 23, 2024, 19:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QListView и QStandardItemModel  (Прочитано 9945 раз)
nixman05
Гость
« : Апрель 09, 2009, 17:32 »

Есть экземпляры класса
QListView *listView;
QStandardItemModel *model;

Далее в коде заполняется модель model и устанавливается в качестве модели для listView


Код
C++ (Qt)
 
   model->removeRows(0,model->rowCount(QModelIndex()),QModelIndex());
   for(int i=0;i<list.count();++i)
   {
       QString s=list.at(i);
       model->insertRows(i,1,QModelIndex());
       model->setData(model->index(i,0,QModelIndex()),QVariant(s),Qt::DisplayRole);
   }
 
   listView->setModel(model);
   listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
   listViewt->update();
 
 

при этом listView остается пустым,
но std::cout<<model->rowCount()<<std::endl; выдает количество строк в модели.

Каким образом отобразить содержимое модели в  listView ?
Записан
spirit
Гость
« Ответ #1 : Апрель 09, 2009, 17:35 »

а че не использовать QStandardItemУлыбающийся
Записан
Rcus
Гость
« Ответ #2 : Апрель 09, 2009, 17:38 »

Я не вижу кода добавляющего колонки.
Записан
nixman05
Гость
« Ответ #3 : Апрель 09, 2009, 17:57 »

Я не вижу кода добавляющего колонки.

После изменения
Код
C++ (Qt)
model=new QStandardItemModel(0,1,this)
 

 все заработало.

Да и еще такой вопрос.
Необходимо, чтобы элементы можно было отмечать. Цикл заполнение модели был изменен следующим образом:
Код
C++ (Qt)
 
   for(int i=0;i<list.count();++i)
   {
       QString s=list.at(i);
       model->insertRows(i,1,QModelIndex());
       model->setData(model->index(i,0,QModelIndex()),QVariant(s),Qt::DisplayRole);
       model->setData(model->index(i,0,QModelIndex()),QVariant(true),Qt::CheckStateRole);
   }
 
 

элементы устанавливаются в состояние checked, но являются неактивными.

Каким образом сделать доступной возможность изменения состояния элемента.
Записан
EhTemka
Гость
« Ответ #4 : Апрель 09, 2009, 18:19 »

void QAbstractItemView::setEditTriggers ( QAbstractItemView::::EditTriggers triggers );
Записан
nixman05
Гость
« Ответ #5 : Апрель 09, 2009, 19:20 »

void QAbstractItemView::setEditTriggers ( QAbstractItemView::::EditTriggers triggers );

С помощью его можно управлять конвертируемостью текста элемента, а каким образом управлять доступностью изменения состояния
Записан
spirit
Гость
« Ответ #6 : Апрель 09, 2009, 19:53 »

читай про Qt::ItemFlags. и как я говорил выше -- юзай QStandardItem раз уже юзаешь QStandardItemModelУлыбающийся
см. метод QStandardItem::setCheckable & QStandardItem::setCheckState.
Записан
nixman05
Гость
« Ответ #7 : Апрель 09, 2009, 21:23 »

читай про Qt::ItemFlags. и как я говорил выше -- юзай QStandardItem раз уже юзаешь QStandardItemModelУлыбающийся
см. метод QStandardItem::setCheckable & QStandardItem::setCheckState.

А если вместо QStandartItemModel использовать QSortFilterProxyModel (необходима фильтрация значений, находящихся в модели) то что тогда
Записан
spirit
Гость
« Ответ #8 : Апрель 10, 2009, 08:28 »

тогда используются замечательные методы
QSortFilterProxyModel::mapToSource
& QSortFilterProxyModel::mapFromSource и получается айтем по индексу.  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.197 секунд. Запросов: 21.