2013-10-14 2 views
2

Я пытаюсь прочитать цвет границы окна (рамки) обычного окна.Как получить цвет рамки окна?

Кажется, что window->palette().color(QPalette::XXXX) сделал бы это, но что такое XXXX? или это невозможно с палитрой? Если да, то как?

+0

Изменить рамку для «строки заголовка» (и рамки для изменения размера на Windows), извините за неточность! – Joan

ответ

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 обычая.

+0

Но это, будучи родным, будет зависящим от системы. Я искал что-то портативное, спасибо! – Joan

+0

@ Juan: На платформах, основанных на X-windows, нет простого способа получить эту информацию. В OS X нет понятия цвета оконной рамы. Механизм тематики имеет не только «цветное» значение для этого. Итак, какую именно переносимость вы ожидаете от чего-то, что поддерживается только на ** одном из трех самых популярных настольных платформ? –

+1

@Juan: В принципе, он * переносится - на единственную платформу, на которой доступна такая информация. –

Смежные вопросы