青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-3  評論-13  文章-10  trackbacks-0
在QT里面,我們可以很方便地調用QtWebKit類庫,來實現一個瀏覽器的開發
基于Html的界面在開發效率,可移植性上都十分有優勢,所以也被很多程序采用,只是我們平時沒注意到而已

下面先說一下,如何創建一個簡易的瀏覽器
通過VS2008+QTSDK,創建一個qt4 GUI工程:

記住,一定要選上QtWebKit和QNetwork(這個后面要用到)...

寫如下一段代碼,一個瀏覽器就做成了:
main.cpp
 1#include <QtGui/QApplication>
 2#include <QWebView>
 3#include <QMainWindow>
 4
 5int main(int argc, char *argv[])
 6{
 7    QApplication a(argc, argv);
 8    QMainWindow window;
 9    QWebView view(&window);
10    view.setGeometry(00600400);
11    view.setUrl(QUrl("http://m.shnenglu.com/boymaster"));
12    window.show();
13    return a.exec();
14}

15
QWebView有兩種方法可以用來設定要顯示的內容,一個是setUrl方法,一個是setContent方法。 這個很簡單,試一下就會,不多說了

進入正題了,接下來介紹一下,如何實現js與C++的雙向調用
這里,僅介紹開發中用到的一種調用方式, 用QWebFrame的addToJavaScriptWindowObject方法
個人比較推薦這種方式,易為理解~~~

1. JS如何調用C++函數,詳見代碼~~~
myobject.h
 1#ifndef MYOBJECT_H
 2#define MYOBJECT_H
 3
 4#include<QObject>
 5#include<QWebPage>
 6#include<QWebFrame>
 7
 8// !! ATTENTION !! : The object do NOT need to inherit from QWidget anymore.
 9class MyObject :public QObject {
10    Q_OBJECT
11private:
12    QWebPage *page;
13public:
14    MyObject(QWebPage *page) : page(page) { }
15public slots:
16    void func(QString arg) {
17        this->page->mainFrame()->evaluateJavaScript("document.body.innerHTML += '" + arg + "';");
18    }

19}
;
20
21#endif // MYOBJECT_H
22

main.cpp
 1#include <QtGui/QApplication>
 2#include <QMainWindow>
 3#include <QWebView>
 4#include <QWebPage>
 5#include <QWebFrame>
 6#include "MyObject.h"
 7
 8int main(int argc, char *argv[])
 9{
10    QApplication a(argc, argv);
11    QMainWindow window;
12    QWebView view(&window);
13    QWebPage page;
14    view.setPage(&page);
15    view.setGeometry(00600400);
16    MyObject obj(&page);
17    page.mainFrame()->addToJavaScriptWindowObject("qt"&obj);
18    QString content("<script>function f() { qt.func('http://m.shnenglu.com/boymaster'); }</script>");
19    content += "<a href='javascript:f()'>Click Me</a>";
20    view.setContent(content.toAscii());
21    window.show();
22
23    return a.exec();
24}

25
這樣,當點擊頁面上的"Click Me",script腳本用會調用到C++中的func函數~~~

2.C++調用JS腳本
myobject.h
 1class MyObject :public QObject {
 2    Q_OBJECT
 3
 4private:
 5    QWebPage *page;
 6    QTimer *timer;
 7
 8public:
 9    MyObject(QWebPage *page) : page(page) {
10        timer = new QTimer;
11        connect(timer, SIGNAL(timeout()), this, SLOT(slotTimerOut()));
12        timer->start(1000);
13    }

14
15signals:
16    void signalObjTimerOut();
17
18private slots:
19    void connectSlots() {
20        page->mainFrame()->evaluateJavaScript("DevObject.signalDevObjTimerOut.connect(f);");
21    }

22
23    void slotTimerOut() {
24        emit signalObjTimerOut();
25    }

26}
;
27
28#endif // MYOBJECT_H

main.cpp
 1int main(int argc, char *argv[])
 2{
 3    QApplication a(argc, argv);
 4    QMainWindow window;
 5    QWebView view(&window);
 6    QWebPage page;
 7    view.setPage(&page);
 8    view.setGeometry(00600400);
 9    MyObject obj(&page);
10    QObject::connect(&view, SIGNAL(loadFinished(bool)), &obj, SLOT(connectSlots()));
11    page.mainFrame()->addToJavaScriptWindowObject("qt"&obj);
12    QString content("<SCRIPT>function f() { document.body.innerHTML += 'http://m.shnenglu.com/boymaster'; }</SCRIPT>");
13    view.setContent(content.toAscii());
14    window.show();
15    return a.exec();
16}

17

這樣,頁面加載后,C++的Timer每隔1秒就會調用到JS的f()函數
posted on 2012-11-09 10:45 雙魚座的程序員 閱讀(470) 評論(0)  編輯 收藏 引用 所屬分類: Qt/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品一区二区三区| 国产日韩欧美| 亚洲精品视频中文字幕| 久久综合导航| 免费精品视频| 亚洲精华国产欧美| 欧美va天堂在线| 亚洲国产日韩欧美一区二区三区| 欧美成人午夜剧场免费观看| 亚洲高清久久网| 亚洲精品专区| 午夜欧美精品| 欧美gay视频激情| 欧美三级视频在线播放| 激情成人在线视频| 日韩视频免费观看高清完整版| 国内精品视频久久| 国产精品区一区二区三| 免费观看亚洲视频大全| 午夜一区在线| 欧美资源在线观看| 亚洲欧美国产视频| 亚洲深夜激情| 免费不卡视频| 一区二区三区国产在线| 一区二区三区 在线观看视频| 亚洲一区二区3| 久久久蜜桃精品| 999亚洲国产精| 久久er精品视频| 欧美日韩www| 国产一区二区电影在线观看| 亚洲国产精品va| 午夜天堂精品久久久久 | 国产模特精品视频久久久久 | 国产精品久久久久久久久免费桃花 | 国产精品久久久久aaaa| 亚洲电影免费观看高清| 亚洲一区精彩视频| 欧美国产三级| 欧美一区二区播放| 国产精品成人免费| 一区二区三区成人| 亚洲国产日韩综合一区| 午夜精品视频在线观看| 欧美日韩在线不卡一区| 亚洲国产日韩欧美| 久久婷婷亚洲| 亚洲欧美日韩国产另类专区| 欧美日韩国产一区二区三区| 亚洲国产精品一区二区第四页av| 久久国产精彩视频| 亚洲素人在线| 欧美午夜视频在线观看| 艳女tv在线观看国产一区| 欧美大片免费| 免费美女久久99| 亚洲国产美国国产综合一区二区| 免费观看在线综合色| 亚洲国产精品一区二区第一页 | 亚洲精品一区二区三区四区高清| 久久国产精品高清| 亚洲欧美卡通另类91av | 亚洲人成在线免费观看| 久久先锋影音| 久久免费精品视频| 在线观看亚洲一区| 女主播福利一区| 久久久夜色精品亚洲| 国产亚洲一区在线| 久久久久久亚洲精品中文字幕| 亚洲欧美日韩精品久久亚洲区| 国产精品欧美日韩久久| 欧美亚洲免费电影| 久久精品一二三| 亚洲国产精品久久久久秋霞影院| 欧美国产一区二区| 欧美日韩大陆在线| 午夜免费在线观看精品视频| 亚洲欧美一区在线| 在线日韩中文字幕| 亚洲精品视频一区| 国产精品永久免费视频| 久久午夜羞羞影院免费观看| 免费日韩一区二区| 亚洲一区二区三区高清不卡| 亚洲欧美日本在线| 91久久精品国产91性色tv| 最新国产精品拍自在线播放| 欧美日韩免费一区| 久久久久久久91| 欧美精品一区三区在线观看| 亚洲欧美日韩一区在线观看| 久久精品一区二区国产| 亚洲免费观看高清完整版在线观看熊 | 欧美日韩国产综合新一区| 一区二区三区你懂的| 亚洲主播在线播放| 亚洲黄色影片| 亚洲欧美日韩直播| 亚洲三级视频| 午夜精品999| 亚洲乱码国产乱码精品精可以看| 亚洲天堂成人在线视频| 伊人久久综合97精品| 99国产精品久久久久老师 | 国产精品成人av性教育| 欧美成人精品在线观看| 国产精品家教| 亚洲精品国产品国语在线app | 欧美大片在线观看一区| 午夜精品成人在线视频| 久久这里只有| 欧美一区二区三区四区视频| 欧美成熟视频| 久久视频一区二区| 国产精品激情av在线播放| 亚洲国产成人在线| 黄网站色欧美视频| 午夜精品区一区二区三| 中国成人亚色综合网站| 免费久久精品视频| 老司机久久99久久精品播放免费| 欧美婷婷久久| 亚洲精品美女91| 91久久精品网| 麻豆精品视频在线| 美女黄色成人网| 一区二区视频欧美| 欧美在线视频不卡| 久久精品国产77777蜜臀| 欧美性猛交99久久久久99按摩| 欧美激情在线有限公司| 在线国产日韩| 久久综合久久久久88| 久久精品视频免费观看| 国产欧美在线| 欧美一区二区成人6969| 久久精品视频在线播放| 国产精品综合不卡av| 亚洲一区免费| 欧美一级视频精品观看| 国产嫩草一区二区三区在线观看 | 亚洲一区二区三区四区五区午夜| 一区二区欧美在线| 欧美日韩一区二区三区在线观看免| 亚洲国产老妈| 亚洲蜜桃精久久久久久久 | 亚洲第一主播视频| 欧美+亚洲+精品+三区| 欧美激情精品久久久久久久变态| 影音先锋亚洲电影| 免费亚洲网站| 日韩视频二区| 欧美在线观看一二区| 国产农村妇女精品一二区| 久久国产精品一区二区| 美国成人毛片| 亚洲免费av网站| 国产精品视频精品| 久久精品夜夜夜夜久久| 亚洲高清视频一区| 亚洲天堂第二页| 国产麻豆91精品| 久久免费视频在线| 亚洲理论在线观看| 性欧美1819sex性高清| 国内精品视频666| 欧美区视频在线观看| 亚洲欧美日产图| 欧美激情影音先锋| 亚洲欧美中文日韩在线| 黑人操亚洲美女惩罚| 欧美精品自拍| 亚久久调教视频| 亚洲欧洲日产国产网站| 欧美日韩黄视频| 欧美一级久久久| 亚洲大片av| 久久精品国产91精品亚洲| 最新成人在线| 国产日韩在线一区二区三区| 久久综合网hezyo| 亚洲天堂偷拍| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲一区二区在线视频| 亚洲高清av在线| 国产免费亚洲高清| 欧美日韩国产小视频| 久久国内精品视频| 亚洲最新在线视频| 欧美护士18xxxxhd| 久久久www成人免费无遮挡大片| 99re热精品| 在线观看日韩欧美| 国产亚洲亚洲| 国产日韩欧美精品在线| 欧美日韩国产探花| 欧美激情aⅴ一区二区三区| 久久久久久久激情视频|