c++ - 窗口标题 Qt 中的小部件

标签 c++ qt gtk

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

提前致谢。

最佳答案

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

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

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

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

关于c++ - 窗口标题 Qt 中的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724802/

相关文章:

python - 如何查询打开的持久委托(delegate)项

stream - 如何使用libxml2解析来自GInputStream(GLibGIO/GVFS)的数据?

c++ - 返回指针时出现段错误

c++ - QT & VTK 交互风格

c++ - 如何专门化模板类的某些成员?

c++ - QT,并发编程和向函数传递参数

python - 在 PyGobject 中绘图 (python3)

widget - 使用 GTK3 编写自定义小部件

c++ - 如何在类中全部内嵌数据结构模板(同一 .h 文件)

c++ - 我无法在 Visual C++ 2010 Express Edition 中包含 <iostream>