Приветствую! Ситуация следующая: имеется QWebView, добавляю в него js объект:
...
page()->mainFrame()->addToJavaScriptWindowObject("window.obj", new Obj);
...
Часть объявления Obj:
class Obj: public QObject {
Q_OBJECT
Q_PROPERTY(QString prop READ prop)
public:
QString prop() const;
protected:
QString m_prop;
...
}
Q_DECLARE_METATYPE(Obj)
Q_DECLARE_METATYPE(Obj*)
Так вот, мне нужно в движке браузера вернуть undefined, к примеру:
Javascript
window.obj.prop === ''; // true
window.obj.prop === undefined; // false (что характерно, а нужно чтобы было наоборот)
Смотрел в сторону QJSValue, получилось бы что-то вроде
class Obj: public QObject {
Q_OBJECT
Q_PROPERTY(QJSValue prop READ prop)
public:
QJSValue prop() const;
protected:
QJSValue m_prop;
...
}
Q_DECLARE_METATYPE(Obj)
Q_DECLARE_METATYPE(Obj*)
QJSValue Obj::prop() {
return QJSValue(QJSValue::UndefinedValue);
}
Конечно же такое не сработало
Javascript
typeof window.obj.prop; // 'string'
window.obj.prop === ''; // true
Или если так:
QJSValue Obj::prop() {
return QJSValue("I'm empty");
}
Javascript
typeof window.obj.prop; // 'string'
window.obj.prop === ''; // true, не то что надо
Похоже что JSC в QtWebkit не в курсе об QJSValue. Нужна обертка? Что делать?