crossplatform.ru

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

> Изменение высоты и ширины ячеек., QTableView
Antrix
  опции профиля:
сообщение 14.3.2009, 18:38
Сообщение #1


Студент
*

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

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




Репутация:   0  


Есть табличка с 2 столбцами и 64к строк. Нужно задать высоту ячеек, например, на 17, ширину на 34.
Пробывал делать так:
QTableView* t = new QTableView();
t->resizeColumnsToContents();
//или так:
for (int i = 0; i < N; i++) //N = 64000
t->horizontalHeader()->resizeSection(i, 17);
Оба варианта слишком медлительны. Как можно ускорить этот процес? Текс во всех ячейках одинаковой длины - 4 символа.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Antrix
  опции профиля:
сообщение 14.3.2009, 21:18
Сообщение #2


Студент
*

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

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




Репутация:   0  


setUpdatesEnabled(...) - непомогло.
Решил проблемму так:
QTableView* t = new QTableView();
t->horizontalHeader()->setDefaultSectionSize(34);
t->verticalHeader()->setDefaultSectionSize(17);
Пробыл сделать как предложил BRE. Не получилось. Переопределил sizeHint, но этот метод даже не вызывается. Нашел решение это й же проблеммы, но все равно не работает.
Вот описание решения: http://lists.trolltech.com/qt-interest/200...ead01062-0.html
Пробую пример не пашет.
Что я делаю не так? Уж очень хочется найти ответ :rolleyes:

Вот исходник.
Прикрепленные файлы
Прикрепленный файл  temp.zip ( 3.3 килобайт ) Кол-во скачиваний: 177
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stanislaus
  опции профиля:
сообщение 14.3.2009, 21:59
Сообщение #3


Студент
*

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

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




Репутация:   0  


Нужно переопределить класс модели, которую ты используешь в QTableView. А именно, переопределить метод QAbstractItemModel::data(), для роли Qt::SizeHint. Так же можно попробовать воспользоваться setData(), но не думаю, что этот вариан будет очень быстрым.
После популяции view, нужно выполнить view->resizeRowsToContents() и view->resizeColumnsToContents(), чтобы был учтен size hint.
Где-то тут в статьях был очень хороший мануал, как эффективно использовать Model/View фреймворк. Не могу найти, к сожалению.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Antrix   Изменение высоты и ширины ячеек.   14.3.2009, 18:38
- - Litkevich Yuriy   Цитата(Antrix @ 14.3.2009, 21:38) Оба вар...   14.3.2009, 19:04
- - BRE   Цитата(Antrix @ 14.3.2009, 18:38) Есть та...   14.3.2009, 19:05
- - Antrix   setUpdatesEnabled(...) - непомогло. Решил проблемм...   14.3.2009, 21:18
|- - BRE   Цитата(Antrix @ 14.3.2009, 21:14) Что я д...   14.3.2009, 21:19
||- - BRE   Цитата(BRE @ 14.3.2009, 21:19) Поглядим. ...   14.3.2009, 22:18
|- - Stanislaus   Нужно переопределить класс модели, которую ты испо...   14.3.2009, 21:59
- - Antrix   BRE спасибо за пример . Но все-равно очень долго ...   15.3.2009, 14:57
- - anonymous   Околотемный вопрос, скажите а можно ли сделать так...   15.3.2009, 15:26
|- - BRE   Цитата(anonymous @ 15.3.2009, 15:26) Окол...   15.3.2009, 15:40
- - Litkevich Yuriy   Цитата(Гость_anonymous_* @ 15.3.2009, 18...   15.3.2009, 16:30
|- - anonymous   Цитата(Litkevich Yuriy @ 15.3.2009, 16:30...   15.3.2009, 20:14
- - Litkevich Yuriy   см. слоты у QTableView там четыре штуки, два для с...   15.3.2009, 20:23
- - Кристина   Цитата(Antrix @ 14.3.2009, 18:38) Есть та...   4.2.2010, 15:28
- - Litkevich Yuriy   По моему Antrix, уже решил проблему. почти год наз...   4.2.2010, 17:59


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


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




RSS Текстовая версия Сейчас: 28.3.2024, 19:27