我有一個QTextEdit
框顯示文本,我希望能夠在同一個QTextEdit
框中設置不同文本行的文本顏色。 (即線1可能是紅色的,線2可能是黑色的等)QTextEdit具有不同的文本顏色(Qt/C++)
這是可能在QTextEdit
框?如果不是,獲得這種行爲的最簡單方法是什麼?
謝謝。
我有一個QTextEdit
框顯示文本,我希望能夠在同一個QTextEdit
框中設置不同文本行的文本顏色。 (即線1可能是紅色的,線2可能是黑色的等)QTextEdit具有不同的文本顏色(Qt/C++)
這是可能在QTextEdit
框?如果不是,獲得這種行爲的最簡單方法是什麼?
謝謝。
格式化爲HTML使用文字,例如:
textEdit->setHtml(text);
其中文本,是一個HTML格式化文本,用彩色線條包含等
只是快速增加:替代自己生成html,如果您以編程方式填充文本框,則使用textEdit->setTextColor(QColor&)
。你可以自己創建QColor對象,或者使用Qt命名空間中的一種預定義顏色(Qt :: black,Qt :: red等)。它會將指定的顏色應用到您添加的任何文本,直到再次用另一個文本調用該顏色。
該只有爲我工作的東西是HTML。
代碼片段如下。
QString line = "contains some text from somewhere ..."
:
:
QTextCursor cursor = ui->messages->textCursor();
QString alertHtml = "<font color=\"DeepPink\">";
QString notifyHtml = "<font color=\"Lime\">";
QString infoHtml = "<font color=\"Aqua\">";
QString endHtml = "</font><br>";
switch(level)
{
case msg_alert: line = alertHtml % line; break;
case msg_notify: line = notifyHtml % line; break;
case msg_info: line = infoHtml % line; break;
default: line = infoHtml % line; break;
}
line = line % endHtml;
ui->messages->insertHtml(line);
cursor.movePosition(QTextCursor::End);
ui->messages->setTextCursor(cursor);
幾個報價:
的QTextEdit是一個高級的所見即所得的瀏覽器/編輯器使用HTML 風格標誌的支持富文本格式。它經過優化,可處理大型文檔並快速響應用戶輸入。
。
文本編輯可以加載純文本和HTML文件(HTML 3.2和4的子集)。
。
QTextEdit可以顯示一個大的HTML子集,包括表格和圖像。
這意味着大部分過時的標籤,因此不包括任何當前CSS,所以我把這個:
// save
int fw = ui->textEdit->fontWeight();
QColor tc = ui->textEdit->textColor();
// append
ui->textEdit->setFontWeight(QFont::DemiBold);
ui->textEdit->setTextColor(QColor("red"));
ui->textEdit->append(entry);
// restore
ui->textEdit->setFontWeight(fw);
ui->textEdit->setTextColor(tc);
+1爲設置屬性,然後附加它 – Niklas 2013-08-12 04:16:06
擴展上https://stackoverflow.com/a/13287446/1619432:
QTextEdit::append()
插入新的段落與先前設置FontWeight/TextColor。 insertHTML()
或InsertPlainText()
以避免插入新的段落(例如,爲了在單行中實現不同的格式)不遵守字體/顏色設置。
而是使用QTextCursor:
...
// textEdit->moveCursor(QTextCursor::End);
QTextCursor cursor(textEdit->textCursor());
QTextCharFormat format;
format.setFontWeight(QFont::DemiBold);
format.setForeground(QBrush(QColor("black")));
cursor.setCharFormat(format);
cursor.insertText("Hello world!");
...
這是迄今爲止最簡單的辦法這樣做。像日誌記錄那樣起作用,每條線都根據消息的嚴重程度進行着色。 – SirDarius 2014-11-17 17:58:04
但這隻會使所有文字都呈現出來,我想用不同的顏色給每種顏色上色,你能幫我解決嗎? – 2015-06-17 15:46:54
如果您使用的是'textEdit'對象,它將使用不同的顏色爲每個'append'調用的文本着色。 – 2016-04-19 16:38:13