crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QPlainTextEdit подсветка строки
qt_user
  опции профиля:
сообщение 24.11.2012, 18:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте! Нужно сделать следующее:
1) Есть QPlainTextEdit
2) В QPlainTextEdit есть текст на 20 строк
3) Я нажимаю на кнопку А и происходит подсветка строки 10
4) Я нажимаю на кнопку Б и происходит подсветка строки 15
5) Также происходит автофокусировка, то есть вертикальный скролл тоже должен реагировать и фокус перемещать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 24.11.2012, 23:02
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Предположительно, копать надо в сторону QSyntaxHighlighter.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 25.11.2012, 0:19
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


void PlainTextEdit::highlightCurrentLine()
{
    QList<QTextEdit::ExtraSelection> extraSelections;

    if (!isReadOnly()) {
        QTextEdit::ExtraSelection selection;

        QPalette pal;
        QColor lineColor = pal.color(QPalette::Base).lighter(160);

        selection.format.setBackground(lineColor);
        selection.format.setProperty(QTextFormat::FullWidthSelection, true);
        selection.cursor = textCursor();
        selection.cursor.clearSelection();
        extraSelections.append(selection);
    }

    setExtraSelections(extraSelections);
}

ну а сюда уже можно подключить нужную строку и тд
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 26.11.2012, 18:54
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо, попробую. Отпишусь...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 28.11.2012, 17:27
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


хотел бы уточнить каким методом в классе QTextCursor курсор устанавливается в N строку ?
setVerticalMovementX?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 29.11.2012, 17:51
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


блин , вот проблема теперь)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 29.11.2012, 19:43
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


bool movePosition ( MoveOperation operation, MoveMode mode = MoveAnchor, int n = 1 )


под рукой нет среды разработки, но думаю что использовать так:
plaintTextEdit.movePosition(QTextCursor::NextRow, QTextCursor::MoveAnchor, n);

n - количество строк, которое надо пройти

Сообщение отредактировал mezmay - 29.11.2012, 19:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 30.11.2012, 19:24
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


нее, не прокатил. Спасибо конеш.
selection.cursor.movePosition(QTextCursor::NextRow, QTextCursor::MoveAnchor, 5);
не пашет. Вопрос темы в силе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 30.11.2012, 23:13
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Исправляюсь, надо использовать не NextRow, a Down:

ui.plainTextEdit->moveCursor(QTextCursor::Down);

Проверил, работает.

p.s. А NextRow нужен для перемещения по таблицам
p.p.s. И если перемещение делается, например, по нажатию кнопки, то надо не забыть вернуть фокус текст эдиту (если надо чтобы отображался курсор)

Сообщение отредактировал mezmay - 30.11.2012, 23:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 1.12.2012, 9:52
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хорошо, спасибо.
mezmay, я кстати вчера еще один способ придумал, тоже работает. Если интересно скину код.
Вчера сил не было уже писать просто) Поэтому не отписался...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.6.2022, 22:41