QML與c++交互學(xué)習(xí)筆記(二) 導(dǎo)出C++類的成員函數(shù)
Posted on 2011-08-04 21:25 RTY 閱讀(539) 評論(0) 編輯 收藏 引用 所屬分類: 轉(zhuǎn)載隨筆 、QML1.導(dǎo)出Person類中的成員方法
2.具體導(dǎo)出過程
導(dǎo)出的方法有
1.使用Q_INVOKABLE
2.使用 槽機(jī)制
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>(); 導(dǎo)出就可以注釋這條
Rectangle {
width: 640
height: 480
Person{ id: per;}
MouseArea{
anchors.fill: parent;
onClicked:{
per.FirstEcho();
per.SecondEcho();
}
}
} |
說明:
這里導(dǎo)出了兩個函數(shù)分別是FirstEcho 和SecondEcho 兩個函數(shù),這兩個函數(shù)本別是使用
FirstEcho使用使用 Q_INVOKABLE導(dǎo)出,SecondEcho直接使用槽。
調(diào)用函數(shù)在控制臺輸出一些信息,這里是在鼠標(biāo)點(diǎn)擊界面后出發(fā)的。


