2013-02-14 181 views
5

我是一名正在開發使用Qt4工作應用程序的學生程序員。我正在建立一個公式編輯器,並且在試圖突出顯示我的QTextEdit字段中的字符串時遇到問題。我有一個函數可以解析QTextEdit字符串,並返回錯誤所在位置的開始和結束整數。我原來的策略是在這兩點使用HTML標籤來突出顯示錯誤。不幸的是,html標籤和公式語法似乎存在問題。如何突出顯示QTextEdit中的文本字符串

我認爲我需要的是一種策略,它依靠Qt的庫來設置這兩個索引之間的背景色。我開始尋找一個QSyntaxHighlighter;然而我認爲這更多的是突出使用一組預定義的規則,而不是僅僅攫取& b和設置背景顏色之間的任何東西。如果我可以使用語法熒光筆,請提供給我和示例或參考,因爲我已經閱讀了文檔並沒有找到任何內容。

感謝您提前提供任何幫助!

P.S.只是爲了強調html兼容性問題;由於使用多個<和>符號,html變得有問題。

回答

10

您可以使用QTextCursorQTextCharFormat它:

QTextEdit *edit = new QTextEdit; 
... 
int begin = ... 
int end = ... 
... 

QTextCharFormat fmt; 
fmt.setBackground(Qt::yellow); 

QTextCursor cursor(edit->document()); 
cursor.setPosition(begin, QTextCursor::MoveAnchor); 
cursor.setPosition(end, QTextCursor::KeepAnchor); 
cursor.setCharFormat(fmt); 
+0

這是我最終結束了轉向..這個答案的問題是,它似乎我不能設置文本返回到默認的顏色之後。我最終做的是抓取背景顏色變化,並將我特定的容易出錯的方程式段設置爲所選文本,直到鼠標單擊到某個位置。顯然,我不強調紅色的問題,但是這個解決方案做了我所需要的;突出顯示我需要的更直觀的方程式檢查方法。 – 2013-02-19 22:48:23

+0

與您可以設置默認背景顏色的方式相同。你只需要保存你之前選擇的文本位置。 – hank 2013-02-20 06:44:50

+0

不幸的是,由於依賴從文本編輯字段發出的觸發,所以這是不可行的。一旦用戶點擊回到框中,我希望突出顯示消失。每次發出此信號時都會重置光標,導致用戶失去右鍵單擊和選擇文本的能力。它可以,如果你不知道的方式;我只是想我會問。 – 2013-02-21 10:31:04