qml与c++的简单实例,Connections信号连接

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QQuickWidget>
#include <QQmlContext>

class Widget : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(int _width READ returnW NOTIFY rectChanged)
    Q_PROPERTY(int _height READ returnH NOTIFY rectChanged)
public:
    Widget(QWidget *parent = 0);
    ~Widget();

    int returnW(){return _width = width();}
    int returnH(){return _height = height();}
    void resizeEvent(QResizeEvent *event);

signals:
    void rectChanged();

private:
    int _width, _height;
    QQuickWidget *qmlWidget;
};

#endif // WIDGET_H


Widget类源文件

#include "widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    qmlWidget = new QQuickWidget(this);
    qmlWidget->rootContext()->setContextProperty("View",this);
    qmlWidget->setSource(QUrl(QStringLiteral("qrc:/Connections.qml")));
    resize(640,450);
}

Widget::~Widget()
{
    if(qmlWidget != NULL)
    {
        delete qmlWidget;
        qmlWidget = NULL;
    }
}

void Widget::resizeEvent(QResizeEvent *event)
{
    emit rectChanged();
}


qml文件,记得要把qml文件放到资源文件里面去哦

import QtQuick 2.0
import QtQuick.Controls 1.4

Rectangle {
    width: View._width
    height: View._height
    color: "green"

    Text {
        id: text1
        text: qsTr("text one")
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.top: parent.top
        anchors.topMargin: 30
        color: "blue"
        font.pixelSize: 18
    }

    Text {
        id: text2
        text: qsTr("text two")
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.top: text1.bottom
        anchors.topMargin: 50;
        color: "yellow"
        font.pixelSize: 18
    }


    Button {
        id: btn
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.top: text2.bottom
        anchors.topMargin: 50
        text: "Change"
    }

    Connections {
        target: btn
        onClicked: {
            text1.color = Qt.rgba(Math.random(),Math.random(),Math.random(),1);
            text2.color = Qt.rgba(Math.random(),Math.random(),Math.random(),1);
        }

// //类似的如果想用Widget里面的信号如下:
//        target: View
//        onRectChanged: test
    }
}

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值