Python 如何使Qt撕下菜单出现在alt选项卡导航中?

Python 如何使Qt撕下菜单出现在alt选项卡导航中?,python,qt,menu,pyqt4,Python,Qt,Menu,Pyqt4,Qt下拉菜单似乎不会出现在Alt tab任务切换程序导航中,可能是因为它们不是顶级小部件。这意味着,一旦撕掉的菜单窗口被另一个窗口遮住,用户就不可能再看到它 以下是一个例子: import sys from PyQt4 import QtGui app = QtGui.QApplication(sys.argv) QtGui.QApplication.setQuitOnLastWindowClosed(False) w = QtGui.QMainWindow(parent=None) menu

Qt下拉菜单似乎不会出现在Alt tab任务切换程序导航中,可能是因为它们不是顶级小部件。这意味着,一旦撕掉的菜单窗口被另一个窗口遮住,用户就不可能再看到它

以下是一个例子:

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)
QtGui.QApplication.setQuitOnLastWindowClosed(False)
w = QtGui.QMainWindow(parent=None)
menu = w.menuBar().addMenu("Menu")
menu.setTearOffEnabled(True)

quit_action = QtGui.QAction("&Quit", w, triggered=QtGui.qApp.quit)
menu.addAction(quit_action)

w.show()
app.exec_()
要重现问题,请执行以下操作:

  • 运行程序
  • 打开标有“菜单”的菜单
  • 单击虚线“撕下”菜单
  • 关闭主窗口
  • 使用Alt Tab切换到完全遮挡已删除菜单的其他窗口
  • 此时,无法找到被撕掉的菜单窗口
我只尝试在GNOME2和GNOMEShell中重现Linux上的问题,但我假设它发生在所有系统上


我怎样才能使被撕掉的菜单窗口出现在Alt tab导航中?

更直观的做法是让它始终显示在顶部吗?您通常不希望它出现在Alt tab列表中,而只是在应用程序获得焦点时将窗口放在最前面。这样,如果用户切换到另一个应用程序,而被撕掉的窗口落在后面,当他返回到你的应用程序时,它将返回顶部。如果你有10个撕下的窗口,它们都显示为单独的alt tab Target,这可能不是太好。事实上,这个特定的应用程序使用了QSystemTrayIcon,所以没有其他窗口。我没有在问题中说明这一点,只是因为我给出的代码较短——可能是个错误!We’我们总是在最上面:不,我想那会很奇怪,因为这扇窗户看起来和其他窗户一样。为什么它的行为会有所不同(回想一下,在没有其他顶级窗口的应用程序中)?