Qt对Windows高对比度主题的支持

Qt对Windows高对比度主题的支持。

  1. QApplication::setStyle(QStyleFactory::create(“Windows”));  这里需要使用Windows主题,而不是Fusion。如果使用Fusion,则一些控件无法跟随系统主题变化。这个很重要,否则高对比度主题切换时,窗口UI界面将不会立即刷新,导致UI显示混乱。
  2. 如果已经定制了界面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]


老刀的技术日志 » Qt对Windows高对比度主题的支持

发表评论