Linux Qt5中的QX11嵌入式容器等效物

Linux Qt5中的QX11嵌入式容器等效物,linux,qt,Linux,Qt,在Qt4中,嵌入通用X11窗口非常容易: app = QtGui.QApplication(sys.argv) win = QtGui.QWidget() container = QtGui.QX11EmbedContainer(win) win_id = container.winId() #create QProcess passing window id to process process = QtCore.QProcess(container) options = ["-wid

在Qt4中,嵌入通用X11窗口非常容易:

app = QtGui.QApplication(sys.argv)
win = QtGui.QWidget()
container = QtGui.QX11EmbedContainer(win)   
win_id = container.winId()

#create QProcess passing window id to process
process = QtCore.QProcess(container)
options = ["-wid", str(win_id)]
process.start(MYPROCESS, options)
我找不到Qt5的等效步骤。我看到了可以使用的建议
QWindow::fromWinId
QWidget::createWindowContainer
,但它们的工作流程相反,似乎更适合操作本机Qt窗口。要使其正常工作,我需要获得X11窗口的Qt
WId
结构,我似乎找不到方法来实现它。

看起来我的主要问题与Python PyQT5实现特别相关。以下代码片段对我很有用:

app = QtWidgets.QApplication(sys.argv)
win = QtWidgets.QWidget()   
winID = int(win.winId())

sub_win = QtGui.QWindow.fromWinId(winID)
container = QtWidgets.QWidget.createWindowContainer(sub_win)

sub_win_id = int(container.winId())

process = QtCore.QProcess(container)
在PyQt5中,
QWidget.winId()
返回一个
SIP.NULL
指针。您需要使用
int()
显式强制转换它,以获得与Qt4相同的返回

也许有更好的方法来实现这一点,但它对我来说很有效