在QtWidget中使用qml,一般是在布局中插入一个QQuickWidget,QQuickWidget的基类是QWidget,通过setSource()设置qml文件。
在QtCreator中使用QQuickWidget,首先在.pro文件中,加入QT+=quickwidgets
在vs中这样设置即可
test.qml
import QtQuick 2.9
import QtQuick.Window 2.2
Rectangle {
id: root
color: "red"
width: 500
height: 500
signal cSignal
Text {
id: text
text: qsTr("Test")
font.pointSize: 20
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: cSignal()
}
onCSignal: {
root.color = "green"
text.text = "test successful!"
}
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QGuiApplication>
#include <QQuickWidget>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("D://Test//QTCreatorTest//test.qml"));
view->show();
this->layout()->addWidget(view);
connect(ui->pushButton, SIGNAL(clicked(bool)), (QObject*)view->rootObject(), SIGNAL(cSignal()));
}
Widget::~Widget()
{
delete ui;
}