Posted on 2011-08-04 21:25
RTY 阅读(501)
评论(0) 编辑 收藏 引用 所属分类:
转载随笔 、
QML
1.导出Person类中的成员方法
2.具体导出过程
导出的方法有
1.使用Q_INVOKABLE
2.使用 槽机制
3.具体代码
// person.h
#ifndef PERSON_H
#define PERSON_H
#include <QObject>
class Person : public QObject
{
Q_OBJECT
public:
explicit Person(QObject *parent = 0);
Q_INVOKABLE void FirstEcho(void);
public slots:
void SecondEcho(void);
};
#endif // PERSON_H |
// person.cpp
#include "person.h"
Person::Person(QObject *parent) :
QObject(parent)
{
}
void Person::FirstEcho(void)
{
// 简简单单打印一句话
qDebug("call Person::FirstEcho");
}
void Person::SecondEcho(void)
{
qDebug("call Person::SecondEcho");
} |
// 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
Person{ id: per;}
MouseArea{
anchors.fill: parent;
onClicked:{
per.FirstEcho();
per.SecondEcho();
}
}
} |
说明:
这里导出了两个函数分别是FirstEcho 和SecondEcho 两个函数,这两个函数本别是使用
FirstEcho使用使用 Q_INVOKABLE导出,SecondEcho直接使用槽。
调用函数在控制台输出一些信息,这里是在鼠标点击界面后出发的。