1

我正在尝试将 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。

4

0 回答 0