如何将qml文件集成到qt-widgets应用程序中?

Nat*_*ile 1 c++ qt qt-quick

我有一个 qt 小部件应用程序。我想将开关控件添加到我的表单中。我添加到我的表单 QDeclarative 小部件并将此行添加到代码中,但没有显示任何内容。

ui->declarativeView->setSource(QUrl::fromLocalFile("test.qml"));
Run Code Online (Sandbox Code Playgroud)

这是qml文件的内容(我把这个文件加到资源里了) 显示在qtcreator下resources/[project_name.qrc]/test.qml

import QtQuick 2.4
import QtQuick.Controls 1.3
Button{
  text:aaaa
}
Run Code Online (Sandbox Code Playgroud)

我添加了专业文件:qt += declarative

我究竟做错了什么??

我正在使用 Qt 5.4.1 QtCreator 3.3.1。

tec*_*eaz 7

1. QDeclarativeView适用于较旧的 Qt 版本。如果您要将应用程序移植到 Qt 5,那么您可以参考此文档

2.对于您的应用程序,您可以使用 Qt 5.x 中的新类,QuickView如下所示。

在您的 ui 中创建布局。或者通过代码来完成。然后将视图添加到布局中,如下所示:

QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(300, 200);
container->setMaximumSize(300, 200);

view->setSource(QUrl("qrc:/test.qml")); // Fetch this url by right clicking on your resource file.
ui->verticalLayout->addWidget(container);
Run Code Online (Sandbox Code Playgroud)

3..pro文件中添加快速模块:

+quick
Run Code Online (Sandbox Code Playgroud)

4.参考:介绍QWidget::createWindowContainer()

5.注意:如果您必须将 url 添加到资源文件中,您必须使用:/参考此处了解更多详细信息。