Изменение цвета QTextBlock, который находится внутри QTextDocument - PullRequest
1 голос
/ 25 марта 2010

Есть ли другой способ изменить QTextLayout QTextBlock, который находится внутри QTextDocument, без необходимости создавать подкласс QAbstractTextDocumentLayout и вызывать его documentChanged?

Я знаю, что при вызове QTextBlock :: layout () const ; «Возвращенный объект QTextLayout можно изменить только из реализации documentChanged подкласса QAbstractTextDocumentLayout», но я колебался, был ли какой-либо другой способ, прежде чем я его реализовал.

ОБНОВЛЕНИЕ В основном я просто хочу, чтобы абзацы (QTextBlock) были длиннее, чем символы X, чтобы они были выделены, а остальные были нормальными.

Ответы [ 2 ]

3 голосов
/ 27 марта 2010

Посмотрите на QSyntaxHighlighter http://doc.qt.io/qt-4.8/qsyntaxhighlighter.html

Это в значительной степени позволит вам делать именно то, что вы пытаетесь сделать.

1 голос
/ 25 марта 2010

Проблема с непосредственным изменением макета блока заключается в том, что он непреднамеренно повлияет на макет текущего активного макета документа (экземпляр внутренней реализации QAbstractTextDocumentLayout) - он вычисляет позиции элементов QTextDocument только внутри documentChanged () и использует их всякий раз, когда это необходимо перекрасить или проверить удар - чтобы эти вещи могли сломаться.

Можете ли вы рассказать, чего вы пытаетесь достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...