1

我想从纯文本中获取文本颜色。我可以使用 charFormat() 获得 fontWeight 和其他格式,但是当我调试前景色时,它被设置为无颜色!!?

请帮我 ....

示例代码:

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

4

1 回答 1

4

如果您使用的是 Qt4,则必须使用 QPalette 类。QPalette 为 GUI 上的不同实体存储不同的颜色(文本颜色、背景等)。它是从父小部件继承的,但可以为您拥有的每个小部件进行更改。

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

阅读 QPalette 文档。根据小部件类型和子类型,它可能是不同的颜色角色。对于非活动文本、普通文本等。

于 2012-10-21T11:43:12.387 回答