0
訪問公共插槽我有這個類:無法從QtScript
class JavaScript : public QObject {
Q_OBJECT
public:
JavaScript();
bool executeFromFile(QString file);
bool enabled;
public slots:
void setEnabled(bool enabled);
bool isEnabled() const;
private:
QScriptEngine engine;
};
的方法是這樣定義的:
#include "javascript.h"
JavaScript::JavaScript() {
executeFromFile("test.js");
}
bool JavaScript::executeFromFile(QString file) {
QFile scriptFile(file);
if (!scriptFile.open(QIODevice::ReadOnly)) return false;
QTextStream stream(&scriptFile);
QString contents = stream.readAll();
scriptFile.close();
engine.evaluate(contents, file);
return true;
}
void JavaScript::setEnabled(bool enabled) {
JavaScript::enabled = enabled;
}
bool JavaScript::isEnabled() const {
return enabled;
}
我試圖訪問以前在規定的公有槽像文件頭文件中說:
http://doc.qt.digia.com/qt/scripting.html#making-a-c-object-available-to-scripts-written-in-qtscript
的test.js文件看起來像這樣,就像文檔的例子:
var obj = new JavaScript();
obj.setEnabled(true);
print("obj is enabled: " + obj.isEnabled());
但我沒有得到任何東西。它似乎沒有找到JavaScript對象。我錯過了什麼?
做一個簡單的
print(1+1)
的作品就好了。
編輯:在QT4網頁的example實現Q_PROPERTY。我想這一點,但得到了同樣的結果:
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
編輯1:試圖實現這樣的初始化:
// javascript.h:
JavaScript(QObject *parent = 0);
// javascript.cpp:
JavaScript::JavaScript(QObject *parent) : QObject(parent) {}
還是什麼都沒有......
編輯2:一些例子也繼承自QScriptable
:
class JavaScript : public QObject, public QScriptable {}
但這也沒有區別。
看看我無法創建QScripClass:**錯誤:類型QScriptClass「不是「的JavaScript」 ** – jviotti
你看了例子的直接基礎? –
示例鏈接已死亡 - 您的意思是這個示例 - http://qt-project.org/doc/qt-4.8/script-customclass.html? –