[Qt-jambi-interest] how to extend a javascript object?
付新荣
FuXinRong at skyworth.com
Mon Aug 10 11:04:59 CEST 2009
hi, evertybody.
i attempt to write a example accoding to the blog http://www.ziobudda.net/node/164328
it add a custom object "m_myobject" to "qwebpage" class.
qwebpage.h
......
MyObject * m_myobject;
......
In the member function "QWebFrame *QWebPage::mainFrame()"
qwebpage.cpp
......
QWebFrame *QWebPage::mainFrame() const
{
......
m_myobject->setWebFrame( d->mainFrame );
......
}
MyObject class:
class MyObject : public QObject
{
Q_OBJECT
Q_PROPERTY(QString testString READ testString WRITE setTestString)
Q_PROPERTY(int testInt READ testInt WRITE setTestInt)
public:
MyObject () : QObject(0), integer(0){}
~MyObject (){}
void setWebFrame( QWebFrame *m_Frame )
{
// QWebPage *page = view->page();
frame = m_Frame;
qDebug() << "setWebFrame";
attachObject();
connect( frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(attachObject()) );
}
void setTestString(const QString &str) {
qDebug() << "called setTestString" << str;
string = str;
}
void setTestInt(int i) {
qDebug() << "called setTestInt" << i;
integer = i;
}
QString testString() const {
qDebug() << "called testString" << string;
return string;
}
int testInt() const {
qDebug() << "called testInt" << integer;
return integer;
}
QString string;
int integer;
// QWebFrame *frame;
public slots:
void foo() {
qDebug() << "foo invoked";
fprintf(stderr, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafuxinrongojdfkdslajfldsjflsd");
}
private slots:
void attachObject()
{
qDebug() << "attachObject";
frame->addToJavaScriptWindowObject( QString("my_exjs"), this );
}
private:
QWebFrame *frame;
};
test.html
<html>
<head>
<script language="javascript">
function sky_js_test()
{
SkyTv.foo();
SkyTv.setTestInt(5);
}
function a()
{
alert("hahha");
}
</script>
</head>
<body onLoad="sky_js_test()">
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
<p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </p>
</body>
</html>
but I can't get the object to do anything inside of html page.
who can give me an example?
More information about the Qt-jambi-interest
mailing list