我有一個小問題,我希望你能幫助我。QT5 Html5ApplicationViewer - C++調用?
第一:我搜索了幾天,發現了一些不同的解決方案,但他們都沒有爲我工作。
我基本上使用HTML5和Javascript構建了一個小應用程序 - 沒有問題。但現在我想將所有的東西保存到一個文件中。這也不是真正的問題,fstreams很容易。
現在,這是我的問題:如何調用我的功能?我已經嘗試了幾種方法,比如製作一個QtObject和類似的東西,但這當然不起作用,因爲我必須將Javascript函數與我的C++函數連接起來。因爲我閱讀了JS-Bridge-Docu(http://qt-project.org/doc/qt-4.8/qtwebkit-bridge.html),但是我沒有很好地理解它(這絕對是在可能性範圍內!),或者它對於我的問題沒有足夠的特定性,因爲我使用內置的Html5ApplicationViewer類而不是QtWeb類之一。
你能否給我解決方案,或者至少有一種方法可以解決這個問題?這真的讓我發瘋,因爲這是我項目中唯一的困難。
目前我的代碼是這樣的:
#include <QApplication>
#include <fstream>
#include "html5applicationviewer.h"
using namespace std;
void initFile() {
fstream f;
f.open("music.nxc", ios::trunc|ios::out);
f << "task main() {" << endl;
f.close();
}
class fileSave : public QObject {
public:
void saveToFile();
};
void fileSave::saveToFile() {
fstream f;
f.open("music.nxc", ios::out|ios::app);
f << "success!" << endl;
f.close();
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Html5ApplicationViewer viewer;
viewer.resize(1280, 800);
viewer.setOrientation(Html5ApplicationViewer::ScreenOrientationAuto);
viewer.showExpanded();
viewer.loadFile(QLatin1String("html/index.html"));
initFile();
fileSave file;
return app.exec();
}
我知道代碼是不是真的好,但我會清理之後這個問題得到解決。
你可以注入你的QObject到Web視圖幀。注入對象的所有插槽對於javascript都是可見的。看到我的回答類似的問題:http://stackoverflow.com/questions/14127098/qtwebview-c-how-to-get-javascript-string-returned-from-linkclicked-event – Archie 2013-08-22 19:44:49