QtWidget 窗口的 QQuickView 子项

QQuickView child of QtWidget window

本文关键字:子项 QQuickView 窗口 QtWidget      更新时间:2023-10-16

我正在尝试创建一个嵌入在现有QWidget窗口中的QQuickView子窗口。下面的代码我创建了一个新的单独的QQuickView窗口而不是子窗口。

主.cpp

subWindow::subWindow(QWidget* parent) {
QQuickView* view = new QQuickView();
view->setSource(QUrl("qrc:/main.qml"));
view->show(); 
}

子窗口.cpp

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow) {
subWindow* sw = new subWindow();
QWidget *sub = QWidget::createWindowContainer(sw, this);
sub->setMinimumSize(1061, 511);
sub->setMaximumSize(1061, 511);
sub->setFocusPolicy(Qt::TabFocus);
ui->subVerticalLayout->addWidget(sub);
}

如果要基于QML创建QWidget,那么最好使用QQuickWidget,为此添加:

QT += quickwidgets

到您的 .pro 域名

最后,您只使用以下方法:

QQuickWidget *sub = new QQuickWidget();
sub->setResizeMode(QQuickWidget::SizeRootObjectToView);
sub->setSource(QUrl("qrc:/main.qml"));
sub->setMinimumSize(1061, 511);
sub->setMaximumSize(1061, 511);
sub->setFocusPolicy(Qt::TabFocus);
ui->subVerticalLayout->addWidget(sub);