登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

旅途

Flying in Sky

 
 
 

日志

 
 

关于QML中调用qt类中的信号,槽,成员函数,属性做记录  

2011-01-04 10:15:32|  分类: QT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
废话不多说直接上代码
((xpqt4.7 sdk) 出现情况是,当一个类在直接写在一个.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 <QObject>
#include <QColor>
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 ");
}
}

}
  评论这张
 
阅读(2250)| 评论(2)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018