我创建了一个无边框的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
我也按照这个步骤操作,但对于提问者来说,它对我也没有用,出现同样的问题。
_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
也可以解决此问题。