窗口标题Qt中的小部件

时间:2015-02-25 16:50:38

标签: c++ qt gtk

在Qt中是否有类似GTK.headerbar或在窗口标题中添加小部件(例如按钮)的任何其他可能性?

提前致谢。

1 个答案:

答案 0 :(得分:2)

简短的回答是“没有”,Qt没有实现任何类型的窗口装饰(除了QWS,这是一个不同的故事)。

在Linux中,标题栏(窗口装饰)由窗口管理器携带,如Metacity或Compiz。 Windows和OSX使用自己的窗口装饰。 Qt几乎无法控制窗口标题栏上发生的事情。

Gnome3 / GTK3(而不是Gnome2)允许您在标题栏中使用小部件,但对于许多其他桌面环境/窗口管理器来说并非如此。您的选择是:

  • 使用窗口管理器/ OS提供的API
    • 优点:原生外观。
    • 缺点:您需要为每个OS / DE维护单独的实现。并非所有支持都这样做。
  • 隐藏窗口装饰并实现自己
    • 优点:代码一次,随处使用。例如,Google Chrome和Vivaldi就是这样做的。
    • 缺点:您需要实现窗口调整大小并移动
  • 在系统标题栏顶部使用覆盖小部件,该小部件将始终跟随窗口
    • 优点:非常简单,但我不推荐。
    • 缺点:移动主窗口时窗口小部件总是会滞后。仍然必须实现原生外观。考虑到用户可以切换主题并且小部件看起来很奇怪。