QQuickView дочерний элемент окна QtWidget

Я пытаюсь создать подокно QQuickView, встроенное в существующее окно QWidget. Приведенный ниже код создает новое отдельное окно QQuickView вместо подокна.

main.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);
}

person user7395312    schedule 05.07.2018    source источник
comment
в чем проблема?   -  person eyllanesc    schedule 05.07.2018
comment
Когда приложение запущено, отображаются два отдельных окна. Я хочу, чтобы подокно отображалось внутри главного окна как виджет.   -  person user7395312    schedule 05.07.2018
comment
подокно или основное окно?   -  person eyllanesc    schedule 05.07.2018
comment
Вы компилируете код?   -  person eyllanesc    schedule 05.07.2018
comment
от какого класса наследуется subWindow?   -  person eyllanesc    schedule 05.07.2018
comment
Мое решение сработало для вас?   -  person eyllanesc    schedule 11.07.2018


Ответы (1)


Если вы хотите создать QWidget на основе QML, то лучше используйте 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);
person eyllanesc    schedule 05.07.2018