Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Ka3a4oK от Май 01, 2008, 20:25



Название: Подсветка текста в QTextEdit
Отправлено: Ka3a4oK от Май 01, 2008, 20:25
С помощью функции setPlainText загружаю документ в QTextEdit. Документ представляет собой обычный текст разбитый на строки, примерно одинаковой длины. Мне необходимо подсветить(изменить цвет фона) текста определенной длины в определенной позиции. Позиция текста определяется относительно начала документа. Длина подсвечиваемого текста может быть любая. Как это сделать наиболее правильно?


Название: Re: Подсветка текста в QTextEdit
Отправлено: Mikhail от Май 01, 2008, 20:38
С помощью функции setPlainText загружаю документ в QTextEdit. Документ представляет собой обычный текст разбитый на строки, примерно одинаковой длины. Мне необходимо подсветить(изменить цвет фона) текста определенной длины в определенной позиции. Позиция текста определяется относительно начала документа. Длина подсвечиваемого текста может быть любая. Как это сделать наиболее правильно?

Наследуй от QTextEdit и в наследнике переопредели paintEvent.

Примерно так:

void TextEdit::paintEvent ( QPaintEvent * event )
{
   QPainter painter( viewport() );
   if ( CurrentLineVisible && CurrentLineColor.isValid() )
   {
      QRect r = cursorRect();
      r.setX( 0 );
      r.setWidth( viewport()->width() );
      painter.fillRect( r, QBrush( CurrentLineColor ));
   }      
   QTextEdit::paintEvent( event );
}

Надо поиграть с QRect r