【问题标题】:QQuickView child of QtWidget windowQtWidget 窗口的 QQuickView 子窗口
【发布时间】:2018-07-05 17:59:45
【问题描述】:

我正在尝试创建一个嵌入在现有 QWidget 窗口中的 QQuickView 子窗口。下面的代码我创建了一个新的单独的 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);
}

【问题讨论】:

  • 有什么问题?
  • 应用程序运行时会显示两个单独的窗口。我希望子窗口像小部件一样显示在主窗口内。
  • 子窗口还是主窗口?
  • 你会编译代码吗?
  • subWindow 继承自什么类?

标签: c++ qml qt-creator qtwidgets


【解决方案1】:

如果您想基于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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2011-10-19
    • 2015-08-05
    • 2013-02-14
    相关资源
    最近更新 更多