QML QWidget 容器

Posted

技术标签:

【中文标题】QML QWidget 容器【英文标题】:QML QWidget container 【发布时间】:2015-07-02 11:10:31 【问题描述】:

我从 Qt Creator 中的 QML 开始,我非常喜欢我读过的所有内容,但现在我发现了一个复杂的问题。

见以下代码:

BLCMainWidget::BLCMainWidget(QWidget *parent) : BLCBaseWidgetControler(parent) 

   QQuickView view;
   view.setSource(QUrl("qrc:///main.qml"));
   QWidget *container = QWidget::createWindowContainer(&view);

   QHBoxLayout *layout = new QHBoxLayout;
   layout->setSpacing(10);
   layout->setAlignment(Qt::AlignHCenter);
   layout->setContentsMargins(1, 1, 1, 1);
   parent->setStyleSheet("background:QColor(200,100,150);");

   layout->addWidget(container);

   parent->setLayout(layout);


parent 是我在应用程序的QMainWindow 上的QWidget,但此代码未显示我的QQuickView 容器。显然,有问题的父级在main() 方法中有一个setCentralWidget 签名,我已经完美地将这个概念用于非QML 小部件。如何解决这个问题以显示我的 QML 对象容器?

我的 QML 只是一个简单的概念示例:

import QtQuick 2.1

Item 
    id: box
    width: 640
    height: 480

    Rectangle 
        id: redSquare
        width: 30; height: 30
        anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10
        color: "green"

        Text  text: "!"; font.pixelSize: 16; anchors.centerIn: parent    
      

谢谢

【问题讨论】:

【参考方案1】:

如果您使用的是最新版本的 Qt,QWidget::createWindoContainer 将被弃用。而是创建一个 QQuickWidget,并将其用作普通的 QWidget。

【讨论】:

【参考方案2】:

看看这个:QML C++ Integration 还有这个:Interact QML from C++

【讨论】:

以上是关于QML QWidget 容器的主要内容,如果未能解决你的问题,请参考以下文章

QWidget 中的 QML 小部件

Qt5。在 QML 中嵌入 QWidget 对象

如何在 QWidget 中插入 QML 视图

qml systemtrayicon 没有 qwidget/qapplication?

C++生成QML代码与QML里面集成QWidget

通过 QWidget 类在 QML 中的事件处理程序