QtQuick与QWidget嵌套使用

来源:互联网 发布:怎样修改手机游戏数据 编辑:程序博客网 时间:2024/05/18 00:46

采用Qml编写的界面程序,如何才能QWidge界面相互嵌套使用呢,有这样一个控件可以帮助你QQuickWidget,使用该控件需要在工程目录中添加:

QT += quickwidgets 
直接上代码:

test.qml

import QtQuick 2.0import QtQuick 2.2import QtMultimedia 5.0Rectangle {     id: page     width: 500; height: 200     color: "lightgray"     Text {         id: helloText         text: "Hello world!"         y: 30         anchors.horizontalCenter: page.horizontalCenter         font.pointSize: 24; font.bold: true     } }
MyQuickWidget.h

<pre style="margin-top: 0px; margin-bottom: 0px;"><!--StartFragment--><span style=" color:#000080;">#ifndef</span><span style=" color:#c0c0c0;"> </span>MYQMLWIDGET_H
#define MYQMLWIDGET_H
#include <QWidget>
#include <QQuickWidget>
#include <QHBoxLayout>
// 该界面是继承QWidget的,这样才能与QWidghet的UI界面相结合使用
class MyQmlWidget : public QWidget
{
    Q_OBJECT
public:
    MyQmlWidget(QWidget *parent = 0);
    ~MyQmlWidget();
private:
    QQuickWidget *quickwidget;
    QHBoxLayout *horlayout;
signals:
    void signalQmlQuit();
private slots:
    void SltQmlQuit();
};
#endif // MYQMLWIDGET_H

.cpp文件

#include "myqmlwidget.h"#include <QQmlEngine>#include <QDebug>MyQmlWidget::MyQmlWidget(QWidget *parent)    : QWidget(parent){    quickwidget = new QQuickWidget();    // 加入qml界面    quickwidget->setSource(QUrl("qrc:///test.qml"));    quickwidget->show();    horlayout = new QHBoxLayout(this);    horlayout->setContentsMargins(10, 10, 10, 10);    horlayout->addWidget(quickwidget);    // 还可以接受qml中的信号//    connect(quickwidget->engine(), SIGNAL(quit()), this, SLOT(SltQmlQuit()));}MyQmlWidget::~MyQmlWidget(){}void MyQmlWidget::SltQmlQuit(){    qDebug() << "qml is quit";    emit signalQmlQuit();}
此时在任何QWidget中都可以使用该qml完成的界面,但是该功能目前还不支持android平台,期望下一个版本可以发布到android平台上就好了。



1 0
原创粉丝点击