2012-10-21 81 views
1

我想從純文本中獲取文本顏色。我可以用charFormat()獲得fontWeight和其他格式,但是當我調試前景色時,它被設置爲無色!如果您使用的Qt4如何從qplaintextedit獲取文本顏色?

QTextCursor c = textCursor(); 
QTextCharFormat result = c.charFormat(); 

if (result.fontWeight() == QFont::Bold) 
    qDebug() << "bold text"; //worked 
else if (result.fontWeight() == QFont::Normal) 
    qDebug() << "normal text"; //worked 

if (result.foreground().color() == Qt::green) 
    qDebug() << "green"; //not worked !! 
else if (result.foreground().color() == Qt::blue) 
    qDebug() << "blue"; //not worked !! 
else 
    qDebug() << "no color !!"; 

TNX

+0

如果您嘗試打印'foregroud()。color()',您會得到什麼? – alestanis

+0

總是我得到QColor(ARGB 1,0,0,0)... – mgh

+0

這代表白色。你應該在你設置*前景色的地方發佈代碼。 – alestanis

回答

3

,你必須使用QPalette類:

請幫我....

示例代碼。 QPalette爲GUI上的不同實體存儲不同的顏色(文本顏色,背景等)。它從父窗口小部件繼承,但可以針對每個窗口小部件進行更改。

QPlainTextEdit *pteEdit; // your text edit 
QPalette palette = pteEdit->palette(); 
QColor textColor = palette.color(QPalette::WindowText); 

閱讀QPalette文檔。它可能是一個不同的顏色角色,具體取決於窗口小部件類型和子類型。對於非活動文本,正常文本等。

+0

mmm! thanx爲您的答案。但我測試它,並不工作...... :(你能幫我嗎? – mgh