Qt对Windows高对比度主题的支持
Qt对Windows高对比度主题的支持。
- QApplication::setStyle(QStyleFactory::create(“Windows”)); 这里需要使用Windows主题,而不是Fusion。如果使用Fusion,则一些控件无法跟随系统主题变化。这个很重要,否则高对比度主题切换时,窗口UI界面将不会立即刷新,导致UI显示混乱。
- 如果已经定制了界面UI,则要么不考虑高对比度,要么处理QApplication::paletteChanged信号。
本人因为使用了一个第三方界面库,第三方界面库使用了系统的主题风格,然后自己又定制了部分界面UI,导致程序在高对比度下的显示显得不伦不类。因此,建议要么自己定制UI,要么直接使用系统风格。
如何判断当前是否高对比度主题:
//判断是否高对比度
HIGHCONTRAST highContrast = { 0 };
highContrast.cbSize = sizeof(highContrast);
SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(highContrast), &highContrast, 0);
if (highContrast.dwFlags & HCF_HIGHCONTRASTON)
{
}
Chrome浏览器支持Windows高对比度主题。但QWebEngineView并不支持Windows高对比度主题,具体原因不清楚,未进一步跟踪分析。
转载请注明来源,谢谢。
有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:[email protected]。