【发布时间】:2014-01-01 01:51:25
【问题描述】:
我已经创建了一个无框架的 Qt/QML 窗口,我真的很想知道设置其“始终在顶部”系统菜单标志的任何编程方式。单击 ALT+SPACE 我可以调出无框窗口的系统菜单,通过单击“始终在顶部”选项,窗口确实始终位于顶部,但我还没有找到一种编程方式做同样的事情。 Qt.WindowStaysOnTopHint 不起作用,尝试 wmctrl -r "window name" -b add,above 也不起作用,即使 wmctrl 确实适用于其他窗口。 wmctrl 不适用于我感兴趣的窗口显然与 wmctrl -l 上机器名称列的 N/A 有关:
francisco@Ubuntu:~$ wmctrl -l
0x02600006 0 Ubuntu Área de trabalho
0x03c00002 0 Ubuntu XdndCollectionWindowImp
0x03c00005 0 Ubuntu unity-launcher
0x03c00008 0 Ubuntu unity-panel
0x03c0000b 0 Ubuntu unity-dash
0x03c0000c 0 Ubuntu Hud
0x046000b3 0 Ubuntu How to make a window aways on top? - Stack Overflow - Mozilla Firefox
0x0520000b 0 N/A Qt Creator
0x05002396 0 Ubuntu francisco@Ubuntu: ~
0x0540000b 0 N/A backlight
我也经历过this procedure,但至于用户询问,它对我也不起作用,同样的行为。 _NET_WM_STATE_ABOVE 已设置,但聚焦窗口,然后再次检查标志,它不再存在,仅在单击系统菜单时才会显示。
这是 QML:https://gist.github.com/oblitum/8050586
相关askubuntu问题:https://askubuntu.com/questions/394998
编辑
通知
在相关的 askubuntu 问题中,发现 wmctrl 上应该存在一个错误,用于通过名称定位某些窗口。使用wmctrl -i -r <window id> -b add,above 也可以解决问题。
【问题讨论】:
-
问题是 Unity 是否正确实现了这种行为。 Unity 是否为用户提供了一种让窗口始终位于顶部的方法?
-
@FrankOsterfeld 正如我所说,它通过在系统菜单上设置“Aways On Top”来工作。我想以编程方式拥有相同的内容。
-
我想弗兰克明白这一点,他分别回复了。 ;-)
-
@LaszloPapp 我没有得到,我是用户,我正在使用带有 Unity 的 Ubuntu,我可以用鼠标设置标志,所以?
-
所以,他知道您希望以编程方式获取它,不用担心。这是第一个验证步骤。无论如何,“Qt.WindowStaysOnTopHint 不起作用”是什么意思?有什么比什么都没有改变?控制台输出等?您是否尝试过追踪其内部情况?
标签: ubuntu x11 qt5 window-managers compiz