要在 Q
ml
窗口中打开 QWidget,可以使用 QQuickWindow 类,该类提供了一个
cr
eateWindowCont
ai
ner() 方法,该方法可用于将 QWidget 对象转换为 QQuickItem,从而在 Q
ml
窗口中嵌入 QWidget。
以下是一个示例代码:
m
ai
n.
cp
p:
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QQuickWindow>
#include "widget.h"
int main(int argc, char *argv[])
QApplication app(argc, argv);
QQmlApplicationEngine engine;
QQuickWindow::setDefaultAlphaBuffer(true);
Widget myWidget;
QQmlContext *context = engine.rootContext();
context->setContextProperty("myWidget", &myWidget);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
main.qml:
import QtQuick 2.15
Rectangle {
width: 640
height: 480
Component.onCompleted: {
var container = myWidget.createWindowContainer();
container.width = 200;
container.height = 200;
container.x = 100;
container.y = 100;
container.show();
在 main.cpp 中,我们创建了一个 Widget 对象 myWidget,然后将其传递给了 QML 引擎的上下文。在 main.qml 中,我们在 Component.onCompleted 信号处理函数中,调用了 myWidget 的 createWindowContainer() 方法创建了一个 QWidget 的容器,并设置了容器的大小和位置,最后显示出来即可。