перемещение курсора в QTextEdit |
Здравствуйте, гость ( Вход | Регистрация )
перемещение курсора в QTextEdit |
void* |
5.6.2008, 11:13
Сообщение
#1
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
добрый день! есть вопрос:
как сделать чтобы если в QTextEdit'е ввели символ { или : и нажали Enter, то курсор перемещается не в начало следующей строки, а на следующую строку и под этим символом? заранее большое спасибо! Сообщение отредактировал void* - 5.6.2008, 11:14 |
|
|
ViGOur |
5.6.2008, 12:32
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Примерно так:
Тебе осталось только получить расстояние до "{" или ":" и заменить --> на него...
|
|
|
void* |
5.6.2008, 12:50
Сообщение
#3
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
1)QTextEdit::toPlainText() по-моему получает весь текст из области, можно ли как-то получать только одну данную линию текста?
2)в моем случае скорее надо вместо QString::right() использовать QString::left(), т.к. когда Ентер нажат, то символ уже введен... 3)может проще сделать через keyPressEvent? вообще, пример того, что я хочу сделать - есть в любой IDE, но я чего-то путаюсь с передвиганием курсора |
|
|
ViGOur |
5.6.2008, 13:53
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Критика конечно же обоснована, но я это набросал как пример для наглядности того, как сделать то, что ты хочешь. Потому оптимизацией занимайся как-нибудь сам...
Получить позицию можно так:
но я чего-то путаюсь с передвиганием курсора Что именно не понятно?
Сообщение отредактировал ViGOur - 5.6.2008, 13:52 |
|
|
void* |
5.6.2008, 14:03
Сообщение
#5
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
ладно, чуть позже еще пошаманю над этим
|
|
|
void* |
6.6.2008, 14:27
Сообщение
#6
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
ViGOur, и все-таки можно ли как-то получить только последнюю строку или, что еще лучше, символ, а не весь текст, как здесь у тебя:
? потому что, я думаю, этот способ будет очень неэффективен для больших объемов текста, расположенных в TextEdit'e параллельно роюсь в ассистенте... З.Ы. насчет второго пункта я был неправ, неправильно понял работу этой функции Сообщение отредактировал void* - 6.6.2008, 17:17 |
|
|
void* |
6.6.2008, 17:43
Сообщение
#7
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
уррряя! получилось большое спасибо!
выкладываю код, может кому еще понадобится:
Сообщение отредактировал void* - 6.6.2008, 17:43 |
|
|
void* |
6.6.2008, 19:12
Сообщение
#8
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
немного усовершенствовал:
(n - целочисленная переменная, хранящаяся в классе и инициализирущаяся в конструкторе для начала нулем) Сообщение отредактировал void* - 6.6.2008, 19:14 |
|
|
Red Devil |
6.6.2008, 22:59
Сообщение
#9
|
Студент Группа: Участник Сообщений: 68 Регистрация: 6.6.2008 Из: Saint-Petersburg Пользователь №: 194 Спасибо сказали: 1 раз(а) Репутация: 3 |
Для того чтобы получить текущию строку :
А для добавления новой строки в место после курсора, лучше использовать QTextCursor::insertBlock(). Сообщение отредактировал Red Devil - 6.6.2008, 23:06 |
|
|
void* |
7.6.2008, 12:48
Сообщение
#10
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
Red Devil, большое спасибо, то что нужно
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 0:39 |