crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QTableView, оптимальная ширина/высота ячеек, при большомм кол-ве элементов
generatorglukoff
  опции профиля:
сообщение 7.8.2008, 18:23
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 7.8.2008
Пользователь №: 256

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




Репутация:   0  


Имею модель с огромным кол-вом элементов (более миллиона). Все элементы - 8ми разрядные шестнадцатиричные числа (т.е. по две цифры).

Хочется сделать ячейки как можно меньше, но так чтобы в любых системных настройках (т.е. подстраиваться) данные в ячейках можно было наблюдать (вместо "..."). resizeColumnToContents работает нереально долго (слишком много данных).

Что посоветуете?

Сообщение отредактировал Litkevich Yuriy - 31.1.2009, 12:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.8.2008, 18:46
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Может как вариант задавать ширину перед заполнением QTableView?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
generatorglukoff
  опции профиля:
сообщение 7.8.2008, 20:49
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 7.8.2008
Пользователь №: 256

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




Репутация:   0  


Цитата(ViGOur @ 7.8.2008, 18:46) *
Может как вариант задавать ширину перед заполнением QTableView?


А как узнать, какое значение ставить? Просто хотелось, чтобы при разных пользовательских настройках данные в QTableView смотрелись хорошо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
niXman
  опции профиля:
сообщение 7.8.2008, 22:36
Сообщение #4


Участник
**

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

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




Репутация:   0  


generatorglukoff, Для разных осей, есть разные функции возвращающие кол-во необходимых пикселей для строки.
В цикле до заполнения, для каждого элемента определяй кол-во пикселей, и отбирай максимальное. Его потом и используй.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.8.2008, 22:53
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Я думаю, что перебирать не нужно.
Просто нужно получать максимальную ширину двух символов и ее устанавливать.

Кажется подбная тема уже была на форуме, получение максимальной ширины символов шрифта, только вот не помню решен был вопрос или нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.8.2008, 1:35
Сообщение #6


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

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

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




Репутация:   94  


Цитата(niXman @ 8.8.2008, 2:36) *
В цикле до заполнения

цикл в нутри модели, он же представление, а не виджет использует.

Цитата(ViGOur @ 8.8.2008, 2:53) *
Просто нужно получать максимальную ширину двух символов и ее устанавливать
самое лучшее решение, надо только ширину одного символа узнать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 10.8.2008, 13:31
Сообщение #7


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

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


Берёшь шрифт вьюшки и запрашиваешь у него ширину максимально широкой строки (если шрифт моноширинный подойдёт любая строка из 2х символов). Прибавляешь небольшой отступ. Какой именно можно подглядеть в исходнике resizeColumnToContents.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 1.6.2020, 5:50