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

隨筆-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://www.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://www.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://www.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>
            最新日韩在线视频| 亚洲深夜福利视频| 亚洲国产欧美在线| 国产视频在线观看一区二区三区| 欧美日韩极品在线观看一区| 欧美精品九九99久久| 久久中文字幕导航| 久久综合免费视频影院| 亚洲一区视频在线| 午夜精品三级视频福利| 欧美在线免费| 麻豆久久精品| 欧美激情视频一区二区三区免费| 久久xxxx精品视频| 久久婷婷麻豆| 欧美三级午夜理伦三级中文幕| 欧美日本国产在线| 欧美午夜激情小视频| 欧美午夜不卡视频| 国产深夜精品福利| 久久国产精品亚洲77777| 欧美一区三区二区在线观看| 久久成人免费视频| 久久久综合精品| 欧美另类一区| 国产精品a级| 影音先锋在线一区| 中日韩男男gay无套| 亚洲欧美日韩国产成人| 久久久99久久精品女同性| 久久久精品国产免费观看同学 | 亚洲国产aⅴ天堂久久| 夜夜嗨av一区二区三区网页| 欧美一区午夜精品| 亚洲国产一区二区在线| 女同一区二区| 国产精品午夜电影| 亚洲欧洲在线一区| 亚欧成人在线| 亚洲精品国精品久久99热一| 新67194成人永久网站| 欧美高清视频在线| 99av国产精品欲麻豆| 久久精品99国产精品日本| 欧美日韩福利视频| 精品成人在线视频| 午夜影院日韩| 日韩视频亚洲视频| 米奇777超碰欧美日韩亚洲| 国产欧美日韩不卡| 中文精品视频| 亚洲丰满在线| 欧美专区日韩专区| 欧美日韩免费视频| 亚洲国产美女精品久久久久∴| 欧美一区在线视频| 在线亚洲美日韩| 欧美日韩国产小视频在线观看| 亚洲国产精品小视频| 久久午夜精品| 欧美一区观看| 国内自拍一区| 久久久综合香蕉尹人综合网| 亚洲无线观看| 欧美午夜在线观看| 中文欧美在线视频| av不卡在线观看| 国产精品高潮呻吟久久| 亚洲自拍高清| 亚洲欧美日韩一区在线| 国产亚洲a∨片在线观看| 久久久久国产一区二区| 久久精品在线免费观看| 1769国产精品| 裸体女人亚洲精品一区| 久久久欧美精品sm网站| 亚洲欧洲精品一区二区精品久久久| 久久色中文字幕| 美女国产精品| 99爱精品视频| 9久re热视频在线精品| 欧美午夜视频在线| 在线亚洲+欧美+日本专区| 亚洲激情成人| 欧美va亚洲va香蕉在线| av成人老司机| 亚洲影院一区| 狠狠干综合网| 欧美高清在线播放| 欧美三区美女| 久久精品99国产精品| 久久久久成人网| 亚洲精品国产系列| 亚洲天堂久久| 在线欧美日韩| 亚洲精品一区二区三| 国产精品日本精品| 久久视频这里只有精品| 欧美黄色片免费观看| 在线一区二区三区四区五区| 中文有码久久| 在线成人黄色| 99re66热这里只有精品3直播 | 一区二区三区在线不卡| 欧美sm视频| 欧美黄网免费在线观看| 亚洲欧美999| 久久人人爽人人爽| 日韩视频在线一区| 亚洲国产专区校园欧美| 国产精品色午夜在线观看| 欧美91大片| 国产精品网站在线播放| 亚洲国产欧洲综合997久久| 国产美女精品在线| 亚洲精品一级| 亚洲国产精品成人综合| 午夜精品国产更新| 亚洲少妇一区| 欧美+日本+国产+在线a∨观看| 性视频1819p久久| 夜夜嗨av一区二区三区网页| 亚洲国产91精品在线观看| 香蕉成人伊视频在线观看| aa亚洲婷婷| 欧美劲爆第一页| 欧美在线视频免费播放| 欧美精品1区2区3区| 久久综合色88| 国产农村妇女毛片精品久久莱园子 | 日韩午夜在线| 久久久久欧美精品| 久久人人九九| 国产一区二区三区四区三区四| 亚洲一区制服诱惑| 亚洲一区二区三区成人在线视频精品| 美女网站在线免费欧美精品| 老司机精品福利视频| 国产日韩三区| 一区二区三区四区五区在线| 一区二区欧美激情| 欧美国产专区| 亚洲人成人一区二区在线观看 | 狠狠噜噜久久| 欧美在线一级va免费观看| 久久精品国产v日韩v亚洲| 国产美女扒开尿口久久久| 亚洲一区亚洲二区| 亚洲色诱最新| 欧美无砖砖区免费| 亚洲一级二级| 香蕉久久夜色| 国产精品嫩草影院av蜜臀| 亚洲欧美日韩综合aⅴ视频| 久久午夜色播影院免费高清| 伊人久久久大香线蕉综合直播| 欧美在线91| 久久精品卡一| 在线精品亚洲一区二区| 久久亚洲色图| 亚洲精品在线免费| 亚洲午夜精品17c| 国产精品一区二区在线| 老鸭窝亚洲一区二区三区| 国产一区二区日韩精品| 久久一区二区三区国产精品| 欧美成人激情视频| 亚洲国产成人av| 欧美激情2020午夜免费观看| 夜夜爽夜夜爽精品视频| 欧美在线综合| 亚洲精品少妇30p| 国产伦精品免费视频 | 性欧美精品高清| 国产一区二区三区丝袜| 欧美国产免费| 亚洲欧美日韩系列| 免费在线看成人av| 一本色道久久综合一区| 国产亚洲精品久久久久久| 欧美电影免费观看| 亚洲欧美一区二区三区极速播放| 乱人伦精品视频在线观看| 99精品久久| 激情综合网激情| 国产精品久久久久久亚洲调教 | 亚洲欧洲在线观看| 国产欧美精品在线观看| 欧美成人一区二区三区| 亚洲欧美日本国产有色| 亚洲高清电影| 久久久久久久久久码影片| 国产精品99久久久久久人| 在线日韩av| 国产一区自拍视频| 国产精品日韩欧美一区| 欧美喷水视频| 欧美国产先锋| 欧美成人激情在线| 久久久久青草大香线综合精品|