Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [РЕШЕНО] QTreeWidget получение выбранного элемента  (Прочитано 4681 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн S_F_H

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Всем доброго времени суток. Есть Заполненный трехуровневый виджет QTreeWidget. Имеет он следующую структуру
 |__lvl1
  |      |___lvl2
  |      |   |____elem1
  |      |   |____elem2
  |      |
  |      |___lvl2
  |          |____elem1
  |          |____elem2
  |__lvl1
          |___lvl2
          |   |____elem1
          |   |____elem2
          |
          |___lvl2
              |____elem1
              |____elem2            

Заполняеться вот так:
for (int i = 0; i < discNames.count(); ++i)
    {
        QTreeWidgetItem *trItem1 = new QTreeWidgetItem(ui->dataTree);
        trItem1->setText(0, discNames[i]);
        trItem1->setText(1,"Discipline");
        trItem1->setTextColor(0, QColor(0,255,0));
        for (int j = 0; j < tableData[i].count(); ++j)
        {
            QTreeWidgetItem *trItem2 = new QTreeWidgetItem(trItem1);
            trItem2->setText(0, discTypes[j]);
            trItem2->setText(1,"Discipline Type");
            trItem2->setTextColor(0,QColor(0,0,255));
            for (int k = 0; k < tableData[i][j].count(); ++k)
            {
                QTreeWidgetItem *trItem3 = new QTreeWidgetItem(trItem2);
                trItem3->setText(0,tableData[i][j][k]);
                trItem3->setText(1,"File Name");
                trItem3->setTextColor(0, QColor(255,0,0));
            }
        }

вопрос, как можно получить выбранный элемент с таким описанием:  [значение lvl1] [значение lvl2] [имя выбранного элемента elem]? т.е.


 |__book
  |      |___ebook
  |      |    |____bk1
  |      |    |____bk2
  |      |
  |      |___manual
  |           |____man1
  |           |____[b]man2[/b]
  |__spels
          |___flame
          |   |____fireplace
          |   |____kerosene_stove
          |
          |___water
              |____rain
              |____river            

Жирным шрифтом обозначен выбранный пользователем элемент, и следовательно надо получить book  manual  man2

Заранее спасибо
« Последнее редактирование: 01 Июля 2011, 10:17:13 от RazrFalcon »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: QTreeWidget получение выбранного элемента
« Ответ #1 : 30 Июня 2011, 10:15:12 »
|___lvl2
|   |____elem1
|   |____elem2

void QMainWindow::on_treeWidget_clicked(const QModelIndex &index)
{
  qDebug()<<index.data(0).toString();
  qDebug()<<index.parent().data(0).toString();
}

out:
elem1
lvl2

Как вариант. Это для двухуровневого.  Для трехуровневого наверное нужно:
qDebug()<<index.parent().parent().data(0).toString();
« Последнее редактирование: 30 Июня 2011, 10:18:04 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн S_F_H

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: QTreeWidget получение выбранного элемента
« Ответ #2 : 30 Июня 2011, 17:36:21 »
спс, работает, толоко .data(0) ноль можно не писать))

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: QTreeWidget получение выбранного элемента
« Ответ #3 : 30 Июня 2011, 18:50:35 »
иногда нужно  ;)
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

 

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