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》的示例demo
本系列会介绍几种QML与C++进行数据交互的方法,包括信号槽的链接,QML调用C++类的方法等。 本文为第一篇:QML访问C++属性。可以访问我的博客查看代码解释。
关于QML与C++交互具体实例,里面涉及QML与C++进行数据交互等功能
1. C++ 对象注册到 QML,QML 访问 C++ 对象; 2. QML 暴露对象给 C++ 进行交互; 3. C++ 创建 QML 对象并进行交互; 4. C++ 对象与 QML 通过信号槽交互。 文档详细描述了四种方式的使用
qml与C++交互代码
博客的相关代码,演示QML与C++的交互。博客地址https://blog.csdn.net/gongjianbo1992/article/details/87965925
QML与c++交互在地图上增加mark的源代码
QML c++ 的详细介绍 和大量交互例子
Qt 提供了两种在 QML 环境中使用 C++ 对象的方式: 1. 在 C++ 中实现一个类,注册到 QML 环境中, QML 环境中使用该类型创建对象 2. 在 C++ 中构造一个对象,将这个对象设置为 QML 的上下文属性,在 QML 环境中直接...
我们知道 ,通过Qt Declarative module ,C++可以动态创建和操纵QML的组件(cpmponents) ,我们利用这些API使用C++来拓展我们的QML程序,反过来也可以将QML嵌入到你的C++程序中。通过Qt的元对象系统( Qt‘s meta...
Qml与C++通信交互Demo,只有最简单的Qml界面调用C++类的函数
NULL 博文链接:https://tcspecial.iteye.com/blog/2034585
QML调用C++方法, C++调用QML,C++发送信号QML接收
QML调用C++方法, C++调用QML,C++发送信号QML接收
c++数据传入qml, qml数据返回给c++,数据互传 ,两种方式
用于管理组件并与组件交互的C++ API - QtDeclarative模块 言归正传:通过Qt Creator,我们可以轻松生成一个Qt Quick的应用工程,从而为QML生成应用程序框架。具体操作详见:创建qt quick (qml) 应用程序。 C++与...
使用qml实现的表格控件,支持JSON文件的导入,支持表格的增删改查操作。支持表格的编辑,撤销等操作。同时内嵌搜索功能
QML--实现与HTML的交互
Qt Quick 是一种高级用户界面技术,使用它可轻松地创建供移动和嵌入式... 研究了几天QML,我想编程人员关心的还是QML怎样与C++ Application交互了。发现网上QT中文资料很少,唉,只能参照官网文档: 一、QML引