我正在尝试将 QMainWindow 作为非 qt 应用程序的父级(应用程序可能会更改)。关于如何做到这一点的任何想法?
qt 窗口可以正常打开,我可以在应用程序中与 python API 进行交互,但是如果我单击应用程序,qt 窗口会位于应用程序窗口的后面。我可以使用 Qt.WindowStaysOnTopHint 标志,但它在所有不理想的东西之上。
伪示例:如果您使用的应用程序(例如 Nuke)的主应用程序也是基于 qt 的,您将使用类似:
def _nuke_main_window():
"""Returns Nuke's main window"""
for obj in QtWidgets.qApp.topLevelWidgets():
if (obj.inherits('QMainWindow') and
obj.metaObject().className() == 'Foundry::UI::DockMainWindow'):
return obj
else:
raise RuntimeError('Could not find DockMainWindow instance')
wdg = myWidget(parent=_nuke_main_window())
wdg.show()
Maya 和任何其他基于 pyqt 的窗口也可以类似地工作。
但是,如果应用程序不是基于 qt:
wdg = myWidget(parent=nonQtWindowQt_ised)
wdg.show()
在哪里:
def nonQtWindowQt_ised():
#return the application main window somehow maybe through python bindings like SIP?
任何示例(理想情况下)或有用的方向将不胜感激。
使用 PyQt5、Python 3.5 和 Linux。