如何通过Qt样式表自定义Qt应用程序的标题栏?

问题描述:

我可以在Qt样式表中自定义Qt应用程序的控件。但是,我找不到自定义标题栏的方法。我发现了一些解决方案,但需要修改应用程序本身的代码。无论如何,你可以使用Qt样式表来定制它吗?如何通过Qt样式表自定义Qt应用程序的标题栏?

+1

您可以制作一个无框窗口并自行构建一个标题栏。添加处理移动的小部件并不难,剩下的只是一个标签和几个按钮。 – Clearer 2017-08-11 08:56:16

Title bar不是您的应用程序或Qt的一部分,也不能使用样式表进行配置。标题栏由Window manager提供。在一些WM中根本没有标题栏。大多数WM支持窗口装饰的可定制主题。 Usualy你可以配置你的WM显示特定的主题的特定窗口。

在Qt中,只有QDockWidget的标题栏可以通过样式表进行配置。

附:一些应用程序从窗口管理器中禁用装饰并绘制标题栏本身(例如Chromium)。

Qt无法控制标题栏和应用程序边框的外观。这是使用的窗口管理器(WM)的领域。 Qt可以要求WM将其关闭或仅显示某些按钮,但这就是它的范围。

自定义标题栏的标准过程是将其删除,然后在标题栏上创建并设置自己的标题栏。对任何人来说,请注意,这并不像你想象的那么酷。有些人喜欢定制他们的标题栏,当他们的应用程序与他们的其他操作环境融合时(大多数人喜欢它),当你完成它时,它不会这样做。

简短回答:没有办法在不更改应用程序的源代码的情况下使用Qt样式表对现有应用程序执行此操作。