crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Изменить значение в столбце QTreeWidget без отмены выделения
miksayer
  опции профиля:
сообщение 28.11.2009, 13:58
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 18.1.2009
Пользователь №: 495

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




Репутация:   0  


Есть QTreeView, в нем список без всяких ветвлений. Нужно изменять значения в столбцах у некоторых элементов, не отменяя при этом выделения? Просто сейчас извращаюсь вот так:
    mainTorrentList->clear();
    std::vector<libtorrent::torrent_handle> torrents = s.get_torrents();
    for (unsigned int i = 0; i <= torrents.size() - 1; i++)
    {
        QTreeWidgetItem * twi = new QTreeWidgetItem(mainTorrentList);
        twi->setText(0, QString(torrents[i].name().c_str()));
        twi->setText(1, QString().setNum(torrents[i].get_torrent_info().total_size()));
        twi->setText(2, QString().setNum(torrents[i].status().progress));

    }

Мало того, что получается медленно. Так еще и выделение снимается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 28.11.2009, 14:39
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

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




Репутация:   2  


Цитата(miksayer @ 28.11.2009, 13:58) *
Мало того, что получается медленно. Так еще и выделение снимается

очищаешь QTreeWidget, а потом заново создаёшь элементы, ожидаешь чего-то другого?

Сообщение отредактировал DEADHUNT - 28.11.2009, 14:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.11.2009, 15:10
Сообщение #3


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

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

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




Репутация:   94  


miksayer, примерно так:
1) берёшь нужный тебе элемент (получаешь указатель)
2) запоминаешь выделен ли он
3) изменяешь его
4) восстанавливаешь состояние выделения
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
miksayer
  опции профиля:
сообщение 28.11.2009, 16:07
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 18.1.2009
Пользователь №: 495

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.11.2009, 15:10) *
miksayer
1) берёшь нужный тебе элемент (получаешь указатель)

вот с этим проблемы. Как получить указатель на элемент по его индексу(я имею в виду порядковый номер в списке)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 28.11.2009, 17:24
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

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




Репутация:   2  


Цитата(miksayer @ 28.11.2009, 16:07) *
вот с этим проблемы. Как получить указатель на элемент по его индексу(я имею в виду порядковый номер в списке)?

QTreeWidgetItem * topLevelItem ( int index ) const
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.11.2009, 17:34
Сообщение #6


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

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

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




Репутация:   94  


Зря ты с виджетом связался, лучше модель/представление использовать.
Всё семейство классов Q{List|Table|Tree}Widget ущербное и не пригодно для нормальной работы.

В виджете внутри есть модель, её можно получить с помощью метода model()
А из модели можно получить всё остальное.

Другими словами, работа с этими виджетами не избавляет от изучения модель/представление. Только добавляет гемороя

DEADHUNT, ему не нужен элемент верхнего уровня
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 28.11.2009, 17:45
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 28.11.2009, 17:34) *
DEADHUNT, ему не нужен элемент верхнего уровня

Цитата(miksayer @ 28.11.2009, 13:58) *
Есть QTreeView, в нем список без всяких ветвлений

эта функция ему поможет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
miksayer
  опции профиля:
сообщение 29.11.2009, 13:07
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 18.1.2009
Пользователь №: 495

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.11.2009, 17:34) *
Зря ты с виджетом связался, лучше модель/представление использовать.
Всё семейство классов Q{List|Table|Tree}Widget ущербное и не пригодно для нормальной работы.

Другими словами, работа с этими виджетами не избавляет от изучения модель/представление. Только добавляет гемороя

ага, вот я и думаю, что нужно писать свою модель
всем спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.12.2024, 18:02