Решил на досуге поиграться с qt && js, сделал пару набросков по примерам в гугле: main.cpp
#include <QtCore>
#include <QtGui>
#include <QtWebKit>
#include <QWebView>
#include <QWebFrame>
#include <QWSServer>
#include <QObject>
#include "myfunc.cpp"
//#include "echo.c"
int main(int argc, char* argv[]){
QApplication app(argc, argv);
QWebView *view = new QWebView;
Foo foo;
QObject::connect(view, SIGNAL(loadFinished(bool)), &foo, SLOT(loadFinished(bool)));
view->load(QUrl("file:///home/userx/qwe/test.html"));
view->show();
foo.CallJS(view);
return app.exec();
}
myfunc.h
#ifndef MYFUNC_H
#define MYFUNC_H
#include <QObject>
#include <QtWebKit>
#include <QWebView>
class Foo: public QWebView {
Q_OBJECT
public:
void CallJS(QWebView *test);
void CallJS_2();
public slots:
void loadFinished(bool);
};
#endif /* MYFUNC_H */
myfunc.cpp
#include "myfunc.h"
#include <QtGui>
#include <QApplication>
#include <QtWebKit>
#include <QWebView>
#include <string>
//Foo::Foo(QObject* parent) :QObject(parent)
//{
//}
void Foo::loadFinished(bool){
QVariant f1result = ((QWebView*)sender())->page()->mainFrame()->evaluateJavaScript("f1('test param')");
qDebug() << f1result.toString();
return CallJS_2();
};
void Foo::CallJS(QWebView *test){
qDebug() <<"CallJS!";
test->page()->mainFrame()->evaluateJavaScript("f1('alert CallJS')");
}
void Foo::CallJS_2(){
qDebug()<<"v2";
((QWebView*)sender())->page()->mainFrame()->evaluateJavaScript("f1('CallJS_2')");
}
И test.html
http://paste.org.ru/?v6sa1gСобственно, что хочу, и что не получается. Мне необходимо вызвать js функцию, с параметром, в произвольный момент времени. Сама же функция, объявлена в файле, и загружается через Qurl(). Способ с сигналом и слотом - работает, но работает,соответственно, при поступлении сигнала. CallJS() же должен выполняться как нужно, но он, не видит страницу и объявленные в ней функции. В какую сторону посоветуете посмотреть ?