Chinaunix首页 | 论坛 | 博客
  • 博客访问: 716061
  • 博文数量: 67
  • 博客积分: 994
  • 博客等级: 准尉
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-03 14:10
文章分类
文章存档

2014年(11)

2013年(14)

2012年(14)

2011年(28)

分类: C/C++

2014-07-21 21:45:31

当一个类在直接写在一个.h文件上后,在QML中调用会挂掉,我这里出现是在我调用的到处函数是获取一个QString的时候,但是把类分别写成.h和.cpp后,没有出现此 情况,不知道具体的原因
// main.cpp
 int main(int argc, char *argv[])
 {
 QApplication app(argc, argv);
 QDeclarativeView view;
 view.rootContext()->setContextProperty("ls",new LS);
 view.setSource(QUrl::fromLocalFile("../QMLAPP/QMLtest.qml"));
 view.show();
 return app.exec();
 }
// LS.h
#ifndef LS_H
#define LS_H
#include 
#include 
class LS : public QObject
{
 Q_OBJECT
 Q_PROPERTY(QColor color READ getColor WRITE setColor NOTIFY colorChange)
public:
 LS(QObject *parent = 0);
 ~LS();
 // Q_INVOKABLE 用于导出函数,让qml能使用
 Q_INVOKABLE QString getText(void) const;
 // 用于属性
 QColor getColor(void) const;
 void setColor(const QColor &c);
signals:
 void sendMsg(const QString &s);
 // 用于属性
 void colorChange(void);
public slots:
 void echoMsg(const QString &s);
private:
 QString m_str;
 QColor m_Color;
};
#endif // LS_H

//LS.cpp
#include "LS.h"
 LS::LS(QObject *parent)
 :QObject(parent),m_str("I am LS class"),m_Color(Qt::blue)
 {
 QObject::connect(this, SIGNAL(sendMsg(QString)), this, SLOT(echoMsg(QString)));
 }
 LS::~LS(){}
 QString LS::getText(void) const
 {
 return m_str;
 }
 // 用于属性
 QColor LS::getColor(void) const
 {
 return m_Color;
 }
 void LS::setColor(const QColor &c)
 {
 m_Color = c;
 }
 void LS::echoMsg(const QString &s)
 {
 qDebug(" %s ", s.toLocal8Bit().data());
 }
//---------------------------------------------------------------------- // QMLtest.qml Rectangle{  id: mainrect  width: 400; height: 300;  color: ls.color;  Text {  id: tls;  text: "click this"  }  MouseArea{  anchors.fill: parent;  onClicked: {  tls.text = ls.getText();  ls.sendMsg(" ok ");  }  }

}
阅读(3476) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~