window 标题中的小部件 Qt

Widgets in window title Qt

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

提前致谢。

简短的回答是 'no',Qt 没有实现任何类型的 window 修饰(除了 QWS,这是一个不同的故事)。

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

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

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