应用程序查看器 setfullscreen 功能不隐藏 ubuntu 侧边栏

Application viewer setfullscreen function not hiding ubuntu sidebar

我正在为 Ubuntu Linux 使用 Qt 和 QML 的应用程序构建 UI。我有一个带有 canvas 元素的查看器 window,默认情况下应该是全屏的。打开应用程序时效果很好(即 ​​Ubuntu 侧边栏和顶部任务栏被隐藏)。但是,一旦我最小化我的应用程序然后使用 viewer->setFullScreen(); 再次最大化它,Ubuntu 侧边栏和顶部任务栏仍然可见并且在 canvas 上书写时存在偏移,因为相同的。 任何帮助将不胜感激。

根据 this topic on askubuntu, your problem do really looks like Unity bug (or feature). But, according to somehow related bug on Launchpad,您似乎可以通过以下方式获得所需的行为:

Turn "Always On Top" on via right-clicking the titlebar of your window, before making it go fullscreen. This will prevent the Unity panel from rendering on top of this fullscreen-window, when using the other screen.

在 Qt 中,您可以通过 QWidget::windowFlags.

Qt::WindowStaysOnTopHint 设置为您的 window/widget

另外注意官方文档中的注释:

  • 此函数在更改 window 的标志时调用 setParent(),导致小部件被隐藏。您必须调用 show() 才能使小部件再次可见。
  • 关于 Qt::WindowStaysOnTopHint -- 通知 window 系统 window 应该位于所有其他 windows 之上。请注意,在 X11 上的某些 window 管理器上,您还必须传递 Qt::X11BypassWindowManagerHint 才能使此标志正常工作。

希望对您有所帮助。