crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 17:06