`
ydbc
  • 浏览: 720601 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

QML与c++交互学习笔记(三)

 
阅读更多

.导出Person类中的属性

2.具体导出过程

1.导出Person一个颜色属性,一个int属性

注意

1.当需要实现属性变化其他引用到此属性的属性也跟着变化的情况的话,需要设置属性相应的信号

2.设置属性的时候,使用的类型必须是已经导出到QML中的类型

3.具体代码


// person.h
#ifndef PERSON_H
#define PERSON_H
#include <QObject>
#include <QColor>
class Person : public QObject
{
    Q_OBJECT
    // 设置设置属性的名字是 bgcolor
    // 对应读取函数名字 bgColor
    // 对应写函数名字 setBgColor
    // 属性发生改变后发送信号 sendBgColorChange
    Q_PROPERTY(QColor bgcolor READ getBgColor WRITE setBgColor NOTIFY sendBgColorChange)
   // 设置设置属性的名字是 count
   // 对应读取函数名字 getCount
   // 对应写函数名字 setCount
   // 属性发生改变后发送信号 sendCountChange
   Q_PROPERTY(int count READ getCount WRITE setCount NOTIFY sendCountChange)
public:
    explicit Person(QObject *parent = 0);
    QColor getBgColor(void) const;
    void setBgColor(const QColor& color);
    int getCount(void);
    void setCount(int count);
signals:
    void sendBgColorChange(void);
    void sendCountChange(void);
private:
    QColor  m_Color;
    int     m_Count;
};
#endif // PERSON_H


// person.cpp
#include "person.h"
//---------------------------------
//
Person::Person(QObject *parent) :
    QObject(parent), m_Color("blue"), m_Count(0)
{
}
//---------------------------------
//
QColor Person::getBgColor(void) const
{
    return m_Color;
}
//---------------------------------
//
void Person::setBgColor(const QColor& color)
{
    m_Color = color;
    emit sendBgColorChange();
}
//---------------------------------
//
int Person::getCount(void)
{
    return m_Count;
}
//---------------------------------
//
void Person::setCount(int count)
{
    m_Count = count;
    emit sendCountChange();
}


// main.cpp
#include <QtGui/QApplication>
#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeEngine>
#include <QtDeclarative/QDeclarativeComponent>
#include "person.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qmlRegisterType<Person>("People",1,0,"Person");
    //qmlRegisterType<Person>();
    QDeclarativeView qmlView;
    qmlView.setSource(QUrl::fromLocalFile("../UICtest/UICtest.qml"));
    qmlView.show();
    return a.exec();
}


// UICtest.qml
import Qt 4.7
import People 1.0 //如果是qmlRegisterType<Person>(); 导出就可以注释这条
Rectangle {
    width: 640
    height: 480
    color: per.bgcolor;
    Person{ id: per;}
    Text {
        id: textlabel;
        text: "text  " + per.count;
    }
    MouseArea{
        anchors.fill: parent;
        onClicked:{
            // 当鼠标按下后,由于属性上有信号,当属性发生改变后,
            // 所有引用此属性的值的都相应的发生改变
            per.bgcolor = "red";
            per.count = 20;
        }
    }
}


说明:

person类中,设置了两个属性bgcolor, count ,他们分别在发送改变后调用自己对应的信号

具体看源代码这里是设置来矩形框的颜色,文本框中文本。

分享到:
评论

相关推荐

    QML与C++交互QML与C++交互

    QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++交互QML与C++...

    QML 与 C++交互 - 02 C++暴露方法到QML

    本系列会介绍几种QML与C++进行数据交互的方法,包括信号槽的链接,QML调用C++类的方法等。 本代码为第二篇《QML 与 C++交互 - 02 C++暴露方法到QML》的示例demo

    QML 与 C++交互 - 01QML访问C++属性

    本系列会介绍几种QML与C++进行数据交互的方法,包括信号槽的链接,QML调用C++类的方法等。 本文为第一篇:QML访问C++属性。可以访问我的博客查看代码解释。

    QML2与C++交互

    关于QML与C++交互具体实例,里面涉及QML与C++进行数据交互等功能

    Qt之QML与 C++ 交互.docx

    1. C++ 对象注册到 QML,QML 访问 C++ 对象; 2. QML 暴露对象给 C++ 进行交互; 3. C++ 创建 QML 对象并进行交互; 4. C++ 对象与 QML 通过信号槽交互。 文档详细描述了四种方式的使用

    qml与C++交互代码

    qml与C++交互代码

    QML与C++交互,解压后路径去掉中文.rar

    博客的相关代码,演示QML与C++的交互。博客地址https://blog.csdn.net/gongjianbo1992/article/details/87965925

    QML与c++交互在地图上增加mark的源代码

    QML与c++交互在地图上增加mark的源代码

    QML与c++交互

    QML c++ 的详细介绍 和大量交互例子

    C++和QML交互

    Qt 提供了两种在 QML 环境中使用 C++ 对象的方式: 1. 在 C++ 中实现一个类,注册到 QML 环境中, QML 环境中使用该类型创建对象 2. 在 C++ 中构造一个对象,将这个对象设置为 QML 的上下文属性,在 QML 环境中直接...

    QML与C++交互使用

    我们知道 ,通过Qt Declarative module ,C++可以动态创建和操纵QML的组件(cpmponents) ,我们利用这些API使用C++来拓展我们的QML程序,反过来也可以将QML嵌入到你的C++程序中。通过Qt的元对象系统( Qt‘s meta...

    Qml与C++通信交互

    Qml与C++通信交互Demo,只有最简单的Qml界面调用C++类的函数

    qml与c++交互

    NULL 博文链接:https://tcspecial.iteye.com/blog/2034585

    Qt实例分析——QML调用C++方法, C++调用QML(

    QML调用C++方法, C++调用QML,C++发送信号QML接收

    Qt Qml实例分析—QML调用C++方法, C++调用QML

    QML调用C++方法, C++调用QML,C++发送信号QML接收

    c++与QML相互通信 数据交互

    c++数据传入qml, qml数据返回给c++,数据互传 ,两种方式

    QML与C++混合编程.pdf

    用于管理组件并与组件交互的C++ API - QtDeclarative模块 言归正传:通过Qt Creator,我们可以轻松生成一个Qt Quick的应用工程,从而为QML生成应用程序框架。具体操作详见:创建qt quick (qml) 应用程序。 C++与...

    TableEdit-0.1.5_qml_C++_

    使用qml实现的表格控件,支持JSON文件的导入,支持表格的增删改查操作。支持表格的编辑,撤销等操作。同时内嵌搜索功能

    QML--实现与HTML的交互

    QML--实现与HTML的交互

    QML与C++交互

    Qt Quick 是一种高级用户界面技术,使用它可轻松地创建供移动和嵌入式...  研究了几天QML,我想编程人员关心的还是QML怎样与C++ Application交互了。发现网上QT中文资料很少,唉,只能参照官网文档:  一、QML引

Global site tag (gtag.js) - Google Analytics