Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Belliever от Февраль 23, 2011, 23:09



Название: Число строк в выделенном тексте
Отправлено: Belliever от Февраль 23, 2011, 23:09
Здравствуйте!

Имеем: виджет QTextEdit, в нем есть текст. Пользователь выделяет несколько строк в тексте.
Вопрос: Можно ли средствами QT подсчитать сколько строк пользователь выделил?

Не хочется анализировать знаки переноса (ентер) и т.п.

Заранее спасибо!


Название: Re: Число строк в выделенном тексте
Отправлено: Fat-Zer от Февраль 23, 2011, 23:51
Код
C++ (Qt)
textEdit->textCursor()->selectedText ()
 
а дальше опять же считать кол-во '\n'.
без этого ИМХО ни как не обойтись, ибо текст в различных эдитах хранится в плоском виде...


Название: Re: Число строк в выделенном тексте
Отправлено: Belliever от Февраль 24, 2011, 00:19
Ясно. Значит классических процедур не избежать :)
Спасибо!


Название: Re: Число строк в выделенном тексте
Отправлено: AleUri от Февраль 24, 2011, 21:28
QString::split
http://doc.qt.nokia.com/latest/qstring.html#split


Название: Re: Число строк в выделенном тексте
Отправлено: lit-uriy от Февраль 24, 2011, 21:32
А там и процедур-то особо нет:
QString text = textEdit->textCursor()->selectedText ();
int lineCounter = text.split("\n").size();

надеюсь в Асистенте прочитаешь, что каждый из методов делает.

AleUri, опередил :)


Название: Re: Число строк в выделенном тексте
Отправлено: Igors от Февраль 24, 2011, 21:53
а дальше опять же считать кол-во '\n'.
Могет быть и '\r' вместо '\n', так что если претендуем на кросс-платформенность, придется отследить 3 варианта

\n
\n\r
\r

(так, чтоб жизнь медом не казалась)


Название: Re: Число строк в выделенном тексте
Отправлено: Fat-Zer от Февраль 25, 2011, 05:34
А там и процедур-то особо нет:
QString text = textEdit->textCursor()->selectedText ();
int lineCounter = text.split("\n").size();

надеюсь в Асистенте прочитаешь, что каждый из методов делает.

AleUri, опередил :)
а не очень ли это всё медленно будет?
а дальше опять же считать кол-во '\n'.
Могет быть и '\r' вместо '\n', так что если претендуем на кросс-платформенность, придется отследить 3 варианта

\n
\n\r
\r

(так, чтоб жизнь медом не казалась)
ЕМНИП внутри QTextEdit (да и во всех строках) на всех системах всё хранится через '/n', хотя я бы ещё раз посмотрел бы...