crossplatform.ru

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

AD
  опции профиля:
сообщение 20.2.2009, 18:37
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Каким образом можно просмотреть все элементы дерева, представленного QTreeWidget? Почитал мануал и не узнал, что и какими функциями это достигается. Можно примерчик либо ссылочку на примерчик?

Сильно ли изменится алгоритм просмотра элементов, если вместо QTreeWidget используется QTreeView?

В ситуации такой:
Tracks
|
|--OnGround
|
|--file1
|
|--file1
|
|--file2
|
|--file3

Есть ли возможность увидеть соседей второго узла file1?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 20.2.2009, 18:47
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


была тема вроде "обход дерева" поищи по форуму.

к стати быстрые ссылки в FAQ, которые я собирал - рулят.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 20.2.2009, 19:51
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вот нашел кое-что. Кидаю ответ сюда, чтобы быстрее можно было найти, не переходя 5 раз по ссылкам.
Цитата
Всё вопрос решён

Перебор всех корневых элментов:

QTreeWidgetItem* item;
for(i=0; i < treeWidget->topLevelItemCount(); i++)
{
item = treeWidget->topLevelItem(i); 
}


ну а по всем элементам через рекурсию

item->child(int i)
item->childcount();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 24.2.2009, 10:56
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вопрос про соседа второго узла file1 не нашел. Сможете помочь? Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 24.2.2009, 13:04
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вот код, который проходит по всем элементам и ищет повторяющиеся. Индексы этих элементов запоминает, а затем чистит их. Но, тут непонятная штука вылезла. Что чистит не все повторяющиеся, а только некоторые, хотя заполнение списка идет правильно. Ну то есть, было 5 повторяющихся элементов, осталось 2. Почему так???? Вот код этой штуковины.
/// Правка дерева этапов полета
void TLV::editTreeView()
{
    QTreeWidgetItem* header = treePhaseView -> topLevelItem(0);
    QTreeWidgetItem *phaseNode = 0, *fileNode = 0, *revFileNode = 0;
    for(register int i=0; i<header -> childCount(); ++i)
    {
        phaseNode = header -> child(i);
        if(phaseNode == 0) break;
        string ph(phaseNode -> text(0).toStdString());
        QList<int> indexList;
        for(register int j=0; j<phaseNode -> childCount(); ++j)
        {
            fileNode = phaseNode -> child(j);
            if(fileNode == 0) break;
            string sj(fileNode -> text(0).toStdString());
            for(register int k=j+1; k<phaseNode -> childCount(); ++k)
            {
                revFileNode = phaseNode -> child(k);
                if(revFileNode == 0) break;
                string pj(revFileNode -> text(0).toStdString());
                if(revFileNode -> text(0) == fileNode -> text(0))
                    indexList.append(k);
            }
        }
        for(register int j=0; j<indexList.size(); ++j)
            phaseNode -> removeChild(phaseNode -> child(indexList[j]));
        int p = 900;
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 5:56