![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Steklova Olga |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
![]() У меня для одной из колонок 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
![]() Может быть, я не в том порядке что-то пишу в своем коде? Или вообще что-то не так делаю? ![]() В этом архиве - папка с файлами проекта и картинками экрана: ![]() Сообщение отредактировал Steklova Olga - 2.4.2012, 19:02 |
|
|
![]() |
Steklova Olga |
![]()
Сообщение
#11
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Snake174, или Вы не правы, или я не знаю...
То, что написано у Вас в коде совсем не подходит. Посмотрите: mymodel1.h
mymodel1.cpp (привожу два варианта метода data)
mainwindow.h
mainwindow.cpp
|
|
|
Steklova Olga |
![]()
Сообщение
#12
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
wiz29,
![]() ![]() |
|
|
wiz29 |
![]()
Сообщение
#13
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Нужен код тестового проекта, к сожалению у меня его не сохранилось.
|
|
|
Steklova Olga |
![]()
Сообщение
#14
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
wiz29, код тестового примера по прежнему можно взять в Вами прикрепленном файле в 9-ом сообщении этой темы.
Надо только внести следующее изменение в код:
Сообщение отредактировал Steklova Olga - 18.4.2012, 11:42 |
|
|
wiz29 |
![]()
Сообщение
#15
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Этот вариант рабочий, если где то будет что то криво, то нужно исправлять функцию делегата, вычисляющую предпочтительные размеры для ячейки.
Сообщение отредактировал wiz29 - 18.4.2012, 13:10
Прикрепленные файлы
|
|
|
Steklova Olga |
![]()
Сообщение
#16
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Да, wiz29, теперь заработало, ура-а-а! Благодарю!
![]() Только в drawDisplay надо внести изменение, которое Вы раньше уже вносили, а сейчас забыли (видимо, взяли не последний прикрепленный файл из сообщения 9, а предпоследний из сообщения 7):
И правильнее будет написать
|
|
|
wiz29 |
![]()
Сообщение
#17
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Да наверное так и есть, скачал не ту версию.
![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.6.2025, 2:45 |