【问题标题】:Colorizing the titlebar in macOS with multiple colors用多种颜色为 macOS 中的标题栏着色
【发布时间】:2019-06-18 14:20:45
【问题描述】:

我有一个在 macOS 上运行的 Qt 应用程序。我找到了一种更改标题栏颜色的方法here,但是我想更进一步。我想模仿 Slack 和 Discord 应用程序使用的标题栏。例如:

如您所见,窗口中控件的颜色延伸到应用程序窗口的最顶部。我认为有两种方法可以完成我想要的:

  1. 我可以在上面粘贴的代码的基础上进行构建。浏览一些 Apple 开发人员文档,我想我可以在标题栏顶部创建一对 NsWindows,具有我想要的任何宽度,并将标题栏附加为这些窗口的父级。一旦我这样做了,我应该能够为每个人进行相同的backgroundColor() 颜色调用。当然,这需要我跟踪控件或窗口何时调整大小并调整标题栏的NsWindows,我不确定可能会导致什么(如果有的话)问题。

    李>
  2. 也许有一种方法可以将标题栏的高度设置为0?我想知道 Discord 应用是否正在这样做,因为:

如果您仔细观察,“查找或开始对话”的编辑框与关闭、最小化和最大化按钮垂直排列,“活动”标签也是如此。但是如果控件确实延伸到应用程序窗口的顶部,那么标准应用程序按钮是如何绘制的呢?

我很想知道 Slack 和 Discord 是如何做到这一点的,尽管我知道他们没有使用 Qt。

我意识到没有 Qt 解决方案,因为 Qt 不绘制标题栏。我知道这将是特定于操作系统的,但由于我没有任何使用 Objective-C++ 或使用 Cocoa 的实际经验(我在 macOS 上的所有编程经验都是标准 C++ 和非 UI 或基于 Qt 的代码)我'感谢任何建议或指导!

【问题讨论】:

    标签: c++ qt cocoa titlebar


    【解决方案1】:

    本机这是通过NSWindowfullSizeContentViewtitlebarAppearsTransparent 属性完成的。将它们设置为 true 后,您可以在标题栏下方绘制或放置控件。

    【讨论】:

    • 谢谢!我能够完成我想要的:NSWindowStyleMask windowMask = NSWindowStyleMaskFullSizeContentView | NSWindowStyleMaskBorderless | NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable; [window setStyleMask: windowMask];
    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 2019-12-20
    • 2014-10-17
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多