2

我正在尝试读取常规窗口的窗口边框(框架)的颜色。

似乎window->palette().color(QPalette::XXXX)可以做到这一点,但这是什么XXXX?还是调色板不可能?如果是这样,怎么做?

4

1 回答 1

2

您需要使用它的本机GetSysColorBrush功能:

QColor getWindowFrameColor() {
    // This is the only way to detect that a given color is supported
    HBRUSH brush = GetSysColorBrush(COLOR_ACTIVEBORDER);
    if (brush) {
        DWORD color = GetSysColor(COLOR_ACTIVEBORDER);
        return QColor(GetRValue(color), GetGValue(color), GetBValue(color));
        // calling DeleteObject(brush) is unnecessary, but would be harmless
    }
    return QColor();
}

我已经在 Qt 源代码中搜索了COLOR_ACTIVEBORDER,而检索它的唯一其他方法是在 WebKit 上运行一些自定义 javascript 代码。

于 2013-10-14T20:17:54.137 回答