如标题所述,如果是在qt4.7及之后的qml中,嵌入一个QWidget很简单。写一个类A,继承一下QGraphicsProxyWidget就好
class A : public QGraphicsProxyWidget{……}
然后将要嵌入的QWidget,通过QGraphicsProxyWidget的setWidget(QWidget * widget),载入到class A中。然后直接将class A加入到qml中即可,原因是此时的qml底层是QGraphicsView,即视图。
但是,在qt5.x开始,qml的架构变了,导致这个方法已经不可用了。如下图:
在qt5.x中qml的底层,变成了QWindow,即qml窗口就是QWindow窗口!
因此,问题的本质其实就是如何在QWindow中加入QWidget(在qml中嵌入QWidget);如何在QWidget中加入QWindow(将qml写好的控件,加入到QWidget中)。