2010-03-25 3 views
0

QAbstractTextDocumentLayout의 하위 클래스를 사용하지 않고 QTextDocument에서 QTextBlock의 배경색을 변경하는 방법이 있습니다. 나는 여러 가지 방법을 시도해 왔으며 결과는 null입니다. 나는 QPlainTextEditor의 textCursor() 메소드에서 시도하고 있으며 실제로 모든 것이 const 인 것처럼 보입니다.QT에서 텍스트 문서의 텍스트 블록 배경을 변경하는 방법

답변

1

당신은 병합 방법을 시도해 볼 수도 있습니다 :

QTextCursor cur = edit->textCursor(); 
QTextCharFormat fmt; 
fmt.setBackground(QBrush(Qt::gray)); 
cur.mergeBlockCharFormat(fmt); 
+0

예 어제 비슷한 것을 시도했다 : blkFormat = new QTextBlockFormat(); blkFormat-> setBackground (QBrush (Qt :: green, Qt :: SolidPattern)); blkFormat-> setForeground (QBrush (Qt :: black, Qt :: SolidPattern)); textCursor(). setBlockFormat (* blkFormat); 그래서 내가 mergeBlockCharFormat()을 사용하여 보았을 때 나는 실종되었다는 것을 알았지 만 프로그램이 디버거에 의해 중단되는 동일한 결과로 끝납니다 : –

+0

당신이 힙에 생성 한 객체에 대한 포인터를 사용하는 것을 보았습니다 블록 형식) - 실제로 그렇게 할 필요가 없습니다 (해당하는 setBlockFormat()을 수행 한 후 정리하는 것이 좋습니다!) - 단지 경고 – deemok

+0

, 그렇지 않으면 문제가있는 부분에 더 많은 코드를 게시 할 수 있습니까? 텍스트 커서가 형식을 수정할 블록 (또는 선택 항목)을 가리켜 야합니다. – deemok

2

이 예제가 도움이 될 수 있습니까?

http://qt.nokia.com/doc/4.6/demos-textedit.html

당신은 Demonstrations-> 텍스트 편집에 QtDemos도 찾을 수 있습니다.

희망 하시겠습니까?

+0

감사합니다, 내 나쁜 나는 단지 예 내부보고 있었다 그들은 예를하지 왜 안 데모, 나는 궁금하다. –

+0

textedit는 사용자 선택 영역의 레이아웃을 수정하는 것처럼 보이기 때문에 프로그래밍 방식으로이 작업을 수행 할 수 있는지 궁금합니다. 내가 코드를 살펴볼 때 나는 보게 될 것이다 : D –

관련 문제