hiahia_hoho 2015-03-15 10:54 采纳率: 0%
浏览 2917

qml 访问不到 Q_PROPERTY中的函数

#include
#include
#include "qtquick2applicationviewer.h"
#include
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
// qmlRegisterType("sensor",1,0,"Sensor");
Sensor data;
viewer.rootContext()->setContextProperty("sensor", &data);
viewer.setMainQmlFile(QStringLiteral("qml/qunima/main.qml"));
//viewer.showExpanded();
viewer.show();
return app.exec();
}
这是我的main.cpp
#include "Sensor.h"
#include
Sensor::Sensor (QObject *parent)
:QObject(parent)
,lightState(false)
{
// this->lightState = false;
}
bool Sensor::getLightState()
{
qDebug()<<"到这进不来"<<lightState;
return lightState;
}
void Sensor::setLightState(bool light)
{
if(light != lightState)
{
lightState = light;
//
// Important
// add functions here!!!!!!
qDebug()<<"到这可以打印出来~"<<endl;
emit lightStateChanged(lightState);
}
qDebug()<<"this lightState is"<<lightState;
}

Sensor::~Sensor()
{

}
这是我的Sensor.cpp
#ifndef SENSOR_H
#define SENSOR_H
#include
class Sensor : public QObject
{
Q_OBJECT
Q_PROPERTY(bool lightState READ getLightState WRITE setLightState NOTIFY lightStateChanged)
public:
explicit Sensor(QObject *parent = 0);
~Sensor();
//Q_INVOKABLE getLightState();
bool getLightState();
void setLightState(bool light);
private:
bool lightState;
signals:
void lightStateChanged(bool light);
};

#endif // SENSOR_H
这是我的Sensor.h
问题是 我在 qml中可以对lightState进行赋值 但是无法调用getLightState()和setLightState()两个函数 请教大神指导如何访问这两个函数 急!!!!

  • 写回答

2条回答 默认 最新

  • foruok 博客专家认证 2015-03-16 07:44
    关注

    set/get等与属性对应的方法,在QML里是自动绑定的,你访问、修改属性时自动调用,不能手工直接调用。想直接调用,请将它们设置为槽或者用Q_INVOKABLE 来修饰。

    评论

报告相同问题?

悬赏问题

  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决