изменение высоты ячеек QTableView, для которого установлен делегат на основе QTextEdit |
Здравствуйте, гость ( Вход | Регистрация )
изменение высоты ячеек QTableView, для которого установлен делегат на основе QTextEdit |
Steklova Olga |
2.4.2012, 18:55
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Здравствуйте! Помогите, пожалуйста, разобраться.
У меня для одной из колонок QTableView установлен делегат на основе QTextEdit. В процессе увеличения ширины окна с помощью мыши у меня не так, как хотелось бы, меняется отображение многострочного текста в ячейках QTableView. Вот что получается в процессе увеличения ширины окна (см. рис1): Из всех состояний выглядят так, как я предполагала и хотела, только состояния 1, 3, 4, 8, 10, 12. В этих состояниях текст отображается не сокращенно, а полностью. Как сделать так, чтобы текст всегда отображался полностью - не понимаю. (Безусловно, я учитываю то, что это возможно только в том случае, если места, отведенного для QTableView в окне, хватает для отображения хотя бы одного самого широкого слова из текста всех ячеек таблицы.) Предполагаю следующее. Когда из состояния 1 я расширяю окно, то в тот момент, когда текст в какой-то ячейке может уже занять меньшее количество строк, tableView->verticalHeader() пересчитывает высоту строк tableView. Но почему-то при этом текст сначала отображается сокращенно, а позже, при дальнейшем расширении окна, отображается уже полностью. Потом все это повторятся с какой-нибудь другой ячейкой. Смотрела тут на форуме темы: http://www.forum.crossplatform.ru/index.ph...ents+QTableView ("QTableView::resizeColumnsToContents, неожидаемое поведение") и http://www.forum.crossplatform.ru/index.ph...leView&st=0 ("Изменение высоты и ширины ячеек., QTableView"). Но решения не нашла. Смотреть исходники Qt для меня сложно. Код у меня такой: создание делегата: http://www.forum.crossplatform.ru/index.php?showtopic=8385 mainwindow.h
mainwindow.cpp
Подумала, что надо использовать чтобы высота строк tableView пересчитывалась автоматически.Если отремить строку то возникает другая проблема. В этом случае текст всегда отображается не сокращенно, а полностью. Но зато высота строк tableView пересчитывается неверно и возникают состояния, когда высота получается меньше, чем необходимо для отображения всего текста ячеек. Вот так (см. рис2):Так тоже не получается то, что хочется: main.cpp
mainwindow.cpp
Может быть, я не в том порядке что-то пишу в своем коде? Или вообще что-то не так делаю? В этом архиве - папка с файлами проекта и картинками экрана: test_texteditdelegate_forum1.zip ( 128,14 килобайт ) Кол-во скачиваний: 266 Сообщение отредактировал Steklova Olga - 2.4.2012, 19:02 |
|
|
wiz29 |
18.4.2012, 12:56
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Этот вариант рабочий, если где то будет что то криво, то нужно исправлять функцию делегата, вычисляющую предпочтительные размеры для ячейки.
Сообщение отредактировал wiz29 - 18.4.2012, 13:10
Прикрепленные файлы
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 5:13 |