2014-10-28 661 views
3

我想更改QPlainTextEdit小部件下的光標顏色。我能夠將它的寬度設置爲6,但我想更改顏色或它。可能嗎 ?Qt 5.3 QPlainTextEdit更改QTextCursor顏色

QFontMetrics fm(font()); 
setCursorWidth(fm.averageCharWidth()); 
//setCursorColor is what I need. 

謝謝。

編輯:

包括舉例說明圖像...

從這:

Initial Cursor Color

要這樣:

enter image description here

感謝。

EDIT2:最後一下

enter image description here

回答

3

您可以使用QTextCharFormat設置QPlainTextEdit中文字的顏色。使用QTextCharFormat::setForeground設置顏色。 然後使用樣式表通過使用color屬性更改光標的顏色。

QPlainTextEdit *p_textEdit = new QPlainTextEdit; 
p_textEdit->setStyleSheet("QPlainTextEdit{color: #ffff00; background-color: #303030;" 
          " selection-background-color: #606060; selection-color: #ffffff;}"); 
QTextCharFormat fmt; 
fmt.setForeground(QBrush(QColor(255,255,255))); 
p_textEdit->mergeCurrentCharFormat(fmt); 
3

編輯

可以更改插入符號的顏色與下一個樣式表:

ui->plainTextEdit->setStyleSheet(
      "QPlainTextEdit" 
      "{" 
      "color: yellow;" 
      "}" 
      ); 

但是還有一個問題,所有的文字變得與這個顏色也是。如何將新的顏色設置爲文本,但留下舊顏色的插入符號?我發現這個解決方案,也許不是最好的:使用HTML代碼:

ui->plainTextEdit->appendHtml("<font color = \"red\"> Sample Text</font>"); 

結果(只要你想原來的顏色插入符號和文字):

enter image description here

現在文字已經需要的顏色,但脫字符號有特殊的顏色。這是一種解決方案,但對我來說有點髒,如果有人會找到更好的方式來改變文本的顏色而不改變字體顏色,請告訴我。

您可以在窗口小部件只更改主光標:

QPixmap pix("pathToPixmap"); 
QCursor cur(pix); 
ui->plainTextEdit->viewport()->setCursor(cur); 

Qt的旁邊嵌入光標:http://qt-project.org/doc/qt-5/qt.html#CursorShape-enum

Qt擁有不具有特定顏色的任何遊標,所以你應該使用你自己的像素圖。您可以使用帶有簡單箭頭的圖像,但使用其他顏色的圖像(如果它具有alpha通道,那麼效果會更好)

Web上有許多不同的遊標。

+0

不幸的是,這不是我所需要的。例如,我需要將插入符號(閃爍)改爲黃色(來自白色)。但謝謝你的答案。 – Yore 2014-10-28 20:02:15

+0

@Yore不,我找到解決方案,我編輯了我的答案。 – Chernobyl 2014-10-28 20:12:30

+0

@matsjoyce這僅僅是來自網絡的例子,但OP不需要這個,所以我刪除了它。 – Chernobyl 2014-10-28 20:18:30