Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ecspertiza от Ноябрь 10, 2010, 22:29



Название: QTextEdit количество строк
Отправлено: ecspertiza от Ноябрь 10, 2010, 22:29
Возможно глупый и тривиальный вопрос, но я никак не могу найти решение, как получить количество строк в QTextEdit ?

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

Пытался просто посчитать деля длину текста на длину QTextEdit получается не точное значение, так как QTextEdit переносит по словам. Вообщем вопрос банален как получить реальное количество строк в QTextEdit ?


Название: Re: QTextEdit количество строк
Отправлено: andrew.k от Ноябрь 11, 2010, 10:42
Возможно глупый и тривиальный вопрос, но я никак не могу найти решение, как получить количество строк в QTextEdit ?

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

Пытался просто посчитать деля длину текста на длину QTextEdit получается не точное значение, так как QTextEdit переносит по словам. Вообщем вопрос банален как получить реальное количество строк в QTextEdit ?
а зачем тебе это нужно?


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


Название: Re: QTextEdit количество строк
Отправлено: GreatSnake от Ноябрь 11, 2010, 11:21
Не уверен, но можно попробовать через QTextEdit::document()->findBlock( 0 ).lineCount().


Название: Re: QTextEdit количество строк
Отправлено: ecspertiza от Ноябрь 11, 2010, 12:11
а зачем тебе это нужно?

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

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

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

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


вот по сути мне и нужно получить реальное кол-во строк с зависимостью от ширины.


Название: Re: QTextEdit количество строк
Отправлено: Пантер от Ноябрь 11, 2010, 12:14
Посмотри в исходниках PSI, там это реализовано.


Название: Re: QTextEdit количество строк
Отправлено: crossly от Ноябрь 11, 2010, 14:05
либо посмотри как в QLAbel реализовано.... в лубом случае нужно копать в сторону чего нибудь на heightForWidth похожего...


Название: Re: QTextEdit количество строк
Отправлено: GreatSnake от Ноябрь 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 );
}
 


Название: Re: QTextEdit количество строк
Отправлено: andrew.k от Ноябрь 11, 2010, 16:22
а зачем тебе это нужно?

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

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


Название: Re: QTextEdit количество строк
Отправлено: ecspertiza от Ноябрь 13, 2010, 22:11
GreatSnake, спасибо большое, твой код шикарно работает, с небольшими поправками, ты изменяешь весь размер ,а я только высоту, вообщем еще раз спасибо :)