crossplatform.ru

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


  Ответ в коим образом QMap<> представить как модель для QTreeView
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 24.8.2010, 16:24
  void QTreeView::expandAll () [slot]
karpoffhome Дата 24.8.2010, 16:10
  решил проблему следующим образом:

CODE

QStandardItemModel * paramList;
int iRow = 0;
QStandardItem * rootItem = paramList->invisibleRootItem();
QMap<QString,QMap<QString,int>*>::const_iterator i;
for (i = mapParamList->constBegin();i != mapParamList->constEnd();++i) {
int jRow = 0;
QStandardItem * paramItem = new QStandardItem(mapParamName->value(i.key()));
QMap<QString,int>::const_iterator j;
for (j = mapParamList->value(i.key())->constBegin();j != mapParamList->value(i.key())->constEnd();++j) {
QStandardItem * keyItem = new QStandardItem(j.key());
QStandardItem * valueItem = new QStandardItem(QString().setNum(j.value()));
paramItem->setChild(jRow,0,keyItem);
paramItem->setChild(jRow,1,valueItem);
jRow++;
}
rootItem->setChild(iRow,0,paramItem);
iRow++;
}


теперь возник следующий вопрос, возможно ли сделать так чтобы все отображалось в развернутом дереве, а то все свернутое и жутко не удобное.
DEADHUNT Дата 20.8.2010, 11:39
 
Цитата(Litkevich Yuriy @ 20.8.2010, 12:33) *
нет. Но вместо него можно использовать хэш (QHash), он хранит в том порядке, в котором добавляли

QHash is unordered, so an iterator's sequence cannot be assumed to be predictable. If ordering by key is required, use a QMap.
хэш таблица не сохраняет порядок.
Litkevich Yuriy Дата 20.8.2010, 11:33
 
Цитата(karpoffhome @ 20.8.2010, 15:06) *
подскажите, а есть ли возможность отключить автоматическую сортировку по ключу в QMap
нет. Но вместо него можно использовать хэш (QHash), он хранит в том порядке, в котором добавляли
Алексей1153 Дата 20.8.2010, 11:18
  DEADHUNT, если сортировать не надо, то зачем хранить как дерево - пущай вектор будет.
DEADHUNT Дата 20.8.2010, 11:16
 
Цитата(Алексей1153 @ 20.8.2010, 12:08) *
karpoffhome, нету такой возможности - примени другой контейнер ) Например, вектор или список

в stl для этого можно 3 параметр шаблона поменять, можно использовать std::unordered_map/boost::unordered_map, в Qt для этого для ключа нужно переопределить operator <
Алексей1153 Дата 20.8.2010, 11:08
  karpoffhome, нету такой возможности - примени другой контейнер ) Например, вектор или список
karpoffhome Дата 20.8.2010, 11:06
  подскажите, а есть ли возможность отключить автоматическую сортировку по ключу в QMap
DIMEDROLL Дата 19.8.2010, 10:44
  ну тогда прийдется вникать в Model/View Programming,
самым простым вариантом, имхо, является использование связки QStandardItemModel\QTreeView, наследоваться от QTreeView и реализовать добавление, удаление, редактирование. Смотри в ассистанте доку по QStandardItemModel:
Цитата
An example usage of QStandardItemModel to create a tree:

 QStandardItemModel model;
QStandardItem *parentItem = model.invisibleRootItem();
for (int i = 0; i < 4; ++i) {
     QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
     parentItem->appendRow(item);
     parentItem = item;
}
karpoffhome Дата 19.8.2010, 10:20
 
Цитата(DIMEDROLL @ 18.8.2010, 16:15) *
Цитата(karpoffhome @ 18.8.2010, 12:57) *
как бы да. но я не соображу как эту структуру данных передать QTreeView

А зачем тебе QTreeView? Возможно подойдет QTreeWidget? в него легко передать твою структуру данных


в классах пока не особо хорошо разбираюсь :)

пытаюсь сделать следующую штуку: описанная структура содержит данные, которые редактируются, удаляются, добавляются. параметры не меняются, модифицируются лишь связки "значение - эквивалент". хотелось бы найти самый оптимальный по трудозатратам и результатам путь (класс :)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 14.7.2020, 16:47