2010-03-25 42 views
0

中的文本文檔中文本塊的背景是否有方法可以在不使用QAbstractTextDocumentLayout的子類的情況下更改QTextDocument中的QTextBlock的背景顏色。我嘗試了很多方法,效果都是空的。我正在嘗試從QPlainTextEditor的textCursor()方法,它似乎幾乎一切都是常量。如何更改Qt

回答

1

你可以嘗試合併方法:

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

是的,我昨天嘗試了類似的東西: blkFormat = new QTextBlockFormat(); blkFormat->的setBackground(QBrush(QT ::綠色,QT :: SolidPattern)); blkFormat-> setForeground(QBrush(QT ::黑色,QT :: SolidPattern)); textCursor()。setBlockFormat(* blkFormat); 所以,當我看到你使用mergeBlockCharFormat()我想這就是我所缺少的,但我最終得到了相同的結果,這是程序被調試器中斷: –

+0

我看到你使用指向你在堆上創建的對象的指針塊格式) - 真的沒有必要這樣做(並希望你在相應的setBlockFormat()後清理它們) - 只是一個警告 – deemok

+0

否則,你可以發佈更多的代碼圍繞你有問題的部分?您需要將文本光標指向您要修改格式的塊(或選區)。 – deemok

2

這個例子能幫助你嗎?

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

你也可以找到它在QtDemos,在Demonstrations->文本編輯。

希望它有幫助!

+0

謝謝你,是我不好,我只想找的例子裏,而不是演示,我不知道爲什麼他們沒有例子。 –

+0

我想知道,如果我能夠以編程方式執行此操作,因爲textedit只能修改用戶選擇的佈局。我會看到,當我通過代碼:D –