QML与c++交互学习笔记(四)
来源:互联网 发布:阿里云的优势和劣势 编辑:程序博客网 时间:2024/06/06 00:30
1.导出Person类,并且一个Job类,Job类包含一个Person的指针
2.具体导出过程
1.通过属性来实现,具体的请看代码
3.具体代码
// person.h#ifndef PERSON_H#define PERSON_H#include <QObject>#include <QColor>class Person : public QObject{ Q_OBJECT // 设置设置属性的名字是 name // 对应读取函数名字 getName // 对应写函数名字 setName // 属性发生改变后发送信号 sendNameChange Q_PROPERTY(QString name READ getName WRITE setName NOTIFY sendNameChange) // 设置设置属性的名字是 age // 对应读取函数名字 getAge // 对应写函数名字 setAge // 属性发生改变后发送信号 sendAgeChange Q_PROPERTY(int age READ getAge WRITE setAge NOTIFY sendAgeChange)public: explicit Person(QObject *parent = 0); QString getName(void) const; void setName(const QString& name); int getAge(void); void setAge(int age);signals: void sendNameChange(void); void sendAgeChange(void);private: QString m_Name; int m_Age;};/* 设想一份工作给予一个人 */class Job : public QObject{ Q_OBJECT Q_PROPERTY(Person *per READ getPerson WRITE setPerson NOTIFY sendPersonChange) Q_PROPERTY(QString jn READ getJobName WRITE setJobName NOTIFY sendJobNameChange)public: explicit Job(QObject *parent = 0); ~Job(); void setPerson(Person *per); Person *getPerson(void) const; void setJobName(const QString & jobname); QString getJobName(void) const;signals: void sendPersonChange(); void sendJobNameChange();private: Person *m_Person; QString m_JobName;};#endif // PERSON_H
// person.cpp#include "person.h"//---------------------------------//Person::Person(QObject *parent) : QObject(parent), m_Name("unknow"), m_Age(0){}//---------------------------------//QString Person::getName(void) const{ return m_Name;}//---------------------------------//void Person::setName(const QString& name){ m_Name = name; emit sendNameChange();}//---------------------------------//int Person::getAge(void){ return m_Age;}//---------------------------------//void Person::setAge(int age){ m_Age = age; emit sendAgeChange();}//---------------------------------//Job::Job(QObject *parent) :QObject(parent), m_Person(0), m_JobName("unknown"){}//---------------------------------//Job::~Job(){}//---------------------------------//void Job::setPerson(Person *per){ m_Person = per; emit sendPersonChange();}//---------------------------------//Person *Job::getPerson(void) const{ return m_Person;}//---------------------------------//void Job::setJobName(const QString & jobname){ m_JobName = jobname; emit sendJobNameChange();}//---------------------------------//QString Job::getJobName(void) const{ return m_JobName;}
// 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>(); qmlRegisterType<Job>("People",1,0,"Job"); QDeclarativeView qmlView; qmlView.setSource(QUrl::fromLocalFile("../UICtest/UICtest.qml")); qmlView.show(); return a.exec();}
// UICtest.qmlimport Qt 4.7import People 1.0 //如果是qmlRegisterType<Person>(); 导出就可以注释这条Rectangle { width: 640 height: 480 Job { id: jobA; jn: "Learn"; per: Person { id: ps; name: "Luly"; age: 25; } } // 显示这份工作的一些信息 Rectangle{ x: 100; y: 100; width: 100; height: 100; Text { text: "Job name:" + jobA.jn; } Text { y: 20; text: "Person name:" + ps.name; } Text { y: 40; text: "Person age:" + ps.age; } } MouseArea{ anchors.fill: parent; onClicked:{ // 我要改变工作的名字 工作人的信息 jobA.jn = "Clean House"; ps.name = "Tom"; ps.age = 30; } }}
说明:
主要是导出了两个类Person和Job, Job 包含一个Person的指针,这样后,可以看到
在QML中,我们需要给予Job对象一个Person来尽心赋值。
QML与c++交互学习笔记(四)
- QML与c++交互学习笔记(四)
- QML与c++交互学习笔记
- QML与c++交互学习笔记(一)
- QML与c++交互学习笔记(二)
- QML与c++交互学习笔记(三)
- QML与c++交互学习笔记(五)
- QML与c++交互学习笔记(七)
- QML与c++交互学习笔记
- QML与c++交互学习
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- lua 与 C交互 学习笔记
- QML与C++交互
- QML与c++交互
- QML与C++交互
- QML与C++交互
- Joomla 1.5架构(十五) Utilities 包
- QML与c++交互学习笔记(二)
- 下载rar文件并解压操作
- QML与c++交互学习笔记(三)
- Android2.2源代码中关于生成图片缩略图的一个bug
- QML与c++交互学习笔记(四)
- 项目管理工具-Redmine
- 看到新的CSDN的博客界面,泪流满面
- QML与c++交互学习笔记(五)
- postfix sasl身份验证
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- QML与c++交互学习笔记(七)
- warning: do not list domain haha.com.cn in BOTH mydestination and virtual_mailbox_domains
- 项目管理工具-Jira