Russian Qt Forum
Ноябрь 24, 2024, 04:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Как в QTextEdit определить строку и позицию курсора
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как в QTextEdit определить строку и позицию курсора (Прочитано 7750 раз)
Day
Частый гость
Offline
Сообщений: 290
Как в QTextEdit определить строку и позицию курсора
«
:
Май 23, 2013, 20:09 »
Ведь методы QTextCursor дают позицию в длинном QString, и что же, каждый раз пересчитывать количество переводов строки до этой позиции?
Скорее всего я чего-то не понимаю.
Просветите кто чем может.
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #1 :
Май 23, 2013, 22:17 »
А что в этом сложного?
Используй
QTextBlock block() const
int position() const
int positionInBlock() const
и учти что строка и блок текста разные вещи.
В блоке может быть несколько строк.
А пересчет можно сделать в слоте связанном с сигналом
void QTextDocument::cursorPositionChanged(const QTextCursor & cursor) [signal]
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #2 :
Июнь 18, 2013, 13:48 »
Mikhail
, благодарю за наводку и приношу извинения за столь длительную задержку ответа - в нашей деревне совсем дрянной интернет и не установлен Qt.
А не могли бы вы, если не сложно, привести маленький пример. Или ссылку.
Не очень понятно, при чем здесь QTextBlock, ведь у меня может не быть вовсе никакого выделенного блока.
И еще, методы position(), positionInBlock() дают int, а мне надо бы получить 2 int-а - плоскостные координаты.
Заранее благодарен за любой ответ.
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #3 :
Июнь 18, 2013, 14:41 »
У тебя может не быть выделенного блока.
QTextEdit предназначен для отображения документа, который содержится в QTextDocument.
Смотри assistant по этим классам и ты увидишь, что QTextDocument состоит из QTextBlock. QTextBlock содержит блок текста до символа перевода строки.
метод position() определяет расположение курсора в QTextDocument.
метод positionInBlock() определяет расположение курсора в QTextBlock.
Методом расчета мжно определить сколько символов каждом блоке-строке.
и какая позиция курсора в блоке на который установлен курсор.
Учти, что текст в QTextBlock может занимать несколько визуальных строк.
Здесь поможет
textWidth : qreal
он определяет ширину текста.
The text width specifies the preferred width for text in the document. If the text (or content in general) is wider than the specified with it is broken into multiple lines and grows vertically. If the text cannot be broken into multiple lines to fit into the specified text width it will be larger and the size() and the idealWidth() property will reflect that.
А вообще это все очень подробно описано в ассистенте.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #4 :
Июнь 18, 2013, 15:28 »
Спасибо!
Что QTextDocumett состоит из QTextBlock-ов, я читал, но как-то не привязал к своей "проблеме"
Буду пробовать...
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #5 :
Июнь 18, 2013, 16:02 »
Надо читать документацию -assistant тебе в помощь
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Как в QTextEdit определить строку и позицию курсора
«
Ответ #6 :
Сентябрь 26, 2013, 12:39 »
Код:
QTextCursor cur = textCursor();
int line = cur.blockNumber();
qDebug() << line;
(перенос строк выключен)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...