我有一个可在macOS上运行的Qt应用程序。我找到了一种更改标题栏here的颜色的方法,但是我想更进一步。我想模仿Slack和Discord应用程序使用的标题栏。例如:
如您所见,窗口中控件的颜色扩展到应用程序窗口的顶部。我认为有两种方法可以完成我想要的事情:
我可以在上面粘贴的代码上构建代码。查看一些Apple开发人员文档,我认为我可以在标题栏顶部创建两个NsWindow
,它们具有所需的任意宽度,并将标题栏作为这些窗口的父项附加。这样做之后,我应该可以为每个电话发出相同的backgroundColor()
颜色电话。当然,这将需要我跟踪控件或窗口何时调整大小并调整标题栏的NsWindow
,而且我不确定会导致什么(如果有)问题。
也许可以通过某种方式将标题栏的高度设置为0
?我想知道这是否是Discord应用程序正在执行的操作,因为:
如果您仔细观察,则显示“查找或开始对话”的编辑框与关闭,最小化和最大化按钮垂直对齐,“活动”标签也是如此。但是,如果控件确实扩展到了应用程序窗口的顶部,那么如何绘制标准的应用程序按钮?
我很想知道Slack和Discord如何做到这一点,即使我知道他们没有使用Qt。
我意识到没有Qt解决方案,因为Qt不会绘制标题栏。我知道这将是特定于OS的,但是由于我没有使用Objective-C ++或使用Cocoa的任何实际经验(我在macOS上的所有编程经验都是使用非UI或基于Qt的代码的标准C ++),因此我d感谢任何建议或指导!
答案 0 :(得分:1)
从本质上讲,这是通过NSWindow
的{{3}}和fullSizeContentView
属性来完成的。将它们设置为true
后,您可以在标题栏下方绘制或放置控件。