PDA

View Full Version : Highlight the full line (LineUnderCursor)



kuku83
4th October 2012, 09:08
We have a selected text in a LineUnderCursor, but we want to hightlight not only the text, we want to hightlight the full line, no text area + text area.

Do you know any method?

Thanks in advance

wysota
5th October 2012, 00:18
Yes. QPlainTextEdit::setExtraSelections() (or its equivalent in QTextEdit) does the trick.

Oh, maybe an example is needed:

#include <QtGui>


class TextEdit : public QPlainTextEdit {
Q_OBJECT
public:
TextEdit() : QPlainTextEdit() {
connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine()));

}
private slots:
void highlightCurrentLine() {
QTextCursor cursor = textCursor();
QTextEdit::ExtraSelection sel;
sel.cursor = cursor;
QTextCharFormat fmt;
fmt.setBackground(QColor(220,220,255));
fmt.setProperty(QTextFormat::FullWidthSelection, true); // this is important
sel.format = fmt;
QList<QTextEdit::ExtraSelection> sels;
sels << sel;
setExtraSelections(sels);
}
};

#include "main.moc"

int main(int argc, char **argv) {
QApplication app(argc, argv);
TextEdit te;
te.insertPlainText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi non ipsum eu risus viverra vestibulum id eget magna. Sed ultricies ultricies odio ac tincidunt. Phasellus volutpat quam non nisi aliquet vehicula. Vivamus placerat ligula lacus, in aliquet metus. Fusce vulputate mauris non turpis mollis ut fermentum eros laoreet. Quisque a neque metus, eleifend venenatis ipsum. Duis ullamcorper, est eget pharetra auctor, mauris mauris placerat purus, sit amet placerat quam lorem aliquam leo. Aliquam erat volutpat.\n"
"Mauris aliquam pulvinar mattis. Proin ac lorem nec ligula lacinia rhoncus. Maecenas mattis urna non augue pellentesque posuere. Pellentesque luctus, purus in vehicula auctor, neque nulla auctor felis, a egestas purus metus at mi. Fusce odio tortor, laoreet vitae hendrerit in, condimentum ut massa. Fusce viverra volutpat lectus ut rhoncus. Ut molestie suscipit urna, quis tristique ante auctor sed. Donec dignissim, risus aliquet condimentum lobortis, orci ante pharetra dolor, vitae mollis ligula massa in elit. Nam risus orci, sollicitudin vel placerat ut, porta sit amet dui.");
te.show();
return app.exec();
}