Linux Qt5中的QX11嵌入式容器等效物
在Qt4中,嵌入通用X11窗口非常容易: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
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窗口的QtWId
结构,我似乎找不到方法来实现它。看起来我的主要问题与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相同的返回
也许有更好的方法来实现这一点,但它对我来说很有效