Russian Qt Forum
Май 08, 2024, 14:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit количество строк  (Прочитано 12816 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Ноябрь 10, 2010, 22:29 »

Возможно глупый и тривиальный вопрос, но я никак не могу найти решение, как получить количество строк в QTextEdit ?

Если текст вносится без символа перевода строки, то ф-ция QTextEdit::document()->lineCount() возвращает еденицу, хотя реально эта строка может быть очень длинной и будет отображаться как пять строк к примеру.

Пытался просто посчитать деля длину текста на длину QTextEdit получается не точное значение, так как QTextEdit переносит по словам. Вообщем вопрос банален как получить реальное количество строк в QTextEdit ?
Записан
andrew.k
Гость
« Ответ #1 : Ноябрь 11, 2010, 10:42 »

Возможно глупый и тривиальный вопрос, но я никак не могу найти решение, как получить количество строк в QTextEdit ?

Если текст вносится без символа перевода строки, то ф-ция QTextEdit::document()->lineCount() возвращает еденицу, хотя реально эта строка может быть очень длинной и будет отображаться как пять строк к примеру.

Пытался просто посчитать деля длину текста на длину QTextEdit получается не точное значение, так как QTextEdit переносит по словам. Вообщем вопрос банален как получить реальное количество строк в QTextEdit ?
а зачем тебе это нужно?
Записан
crossly
Гость
« Ответ #2 : Ноябрь 11, 2010, 11:09 »

Цитировать
Если текст вносится без символа перевода строки, то ф-ция QTextEdit::document()->lineCount() возвращает еденицу, хотя реально эта строка может быть очень длинной и будет отображаться как пять строк к примеру.
и правильно возвращает.... потому как в данном случае кол-во строк будет зависеть от ширины QTextEdit.... 
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Ноябрь 11, 2010, 11:21 »

Не уверен, но можно попробовать через QTextEdit::document()->findBlock( 0 ).lineCount().
Записан

Qt 5.11/4.8.7 (X11/Win)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Ноябрь 11, 2010, 12:11 »

а зачем тебе это нужно?

Мне нужно рассчитать высоту QTextEdit , то есть высота QTextEdit  должна быть чуть больше чем высота всего текста, что бы не было линий прокрутки

Не уверен, но можно попробовать через QTextEdit::document()->findBlock( 0 ).lineCount().
.

тоже возвращает 1 вроде как.

и правильно возвращает.... потому как в данном случае кол-во строк будет зависеть от ширины QTextEdit.... 


вот по сути мне и нужно получить реальное кол-во строк с зависимостью от ширины.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Ноябрь 11, 2010, 12:14 »

Посмотри в исходниках PSI, там это реализовано.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
crossly
Гость
« Ответ #6 : Ноябрь 11, 2010, 14:05 »

либо посмотри как в QLAbel реализовано.... в лубом случае нужно копать в сторону чего нибудь на heightForWidth похожего...
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Ноябрь 11, 2010, 16:13 »

Я когда-то заморачивался с установкой размера QTextEdit-a с заданным содержанием.
Реализовывал свой ToolTip на основе QTextBrowser-a.
Может тебе это поможет:
Код
C++ (Qt)
void TextEdit::setTextAndResize( const QString& text )
{
QSize ds = QApplication::desktop()->size();
QTextDocument *doc = document();
 
QSize sz( ds.width(), ds.height() );
setMaximumSize( sz );
 
setText( text );
 
document()->adjustSize();
sz = document()->size().toSize() + QSize( 4, 4 );
doc->setPageSize( QSizeF( sz ) );
 
setMinimumSize( sz );
setMaximumSize( sz );
}
 
« Последнее редактирование: Ноябрь 11, 2010, 16:19 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
andrew.k
Гость
« Ответ #8 : Ноябрь 11, 2010, 16:22 »

а зачем тебе это нужно?

Мне нужно рассчитать высоту QTextEdit , то есть высота QTextEdit  должна быть чуть больше чем высота всего текста, что бы не было линий прокрутки
А зачем тебе это нужно?

Тебе нужно, чтобы полосы прокрутки не появлялись?
Так ты можешь поставить их в режим авто и отслеживать их появление. Появились - больше текста добавлять нельзя или что там у тебя, расширить редактор вниз. Высоту строки текста определить не сложно (это на сколько надо растянуть редактор).
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #9 : Ноябрь 13, 2010, 22:11 »

GreatSnake, спасибо большое, твой код шикарно работает, с небольшими поправками, ты изменяешь весь размер ,а я только высоту, вообщем еще раз спасибо Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 23.