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

隨筆-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>
            亚洲一区免费| 91久久极品少妇xxxxⅹ软件| 欧美中文在线观看国产| 亚洲一区二区欧美| 亚洲欧美综合精品久久成人| 亚洲欧美日韩爽爽影院| 性娇小13――14欧美| 欧美一区二区三区另类| 久久精品99| 欧美国产第二页| 国产精品久久久91| 国内精品视频在线观看| 日韩一区二区精品在线观看| 亚洲欧美不卡| 久热成人在线视频| 日韩一级网站| 久久精品二区三区| 欧美日韩精品二区| 伊人精品在线| 亚洲一区二区在线播放| 久久综合国产精品| 亚洲伦理精品| 久久亚洲风情| 国产乱子伦一区二区三区国色天香| 亚洲盗摄视频| 欧美影院在线播放| 亚洲精品视频免费观看| 久久久www成人免费毛片麻豆| 欧美日韩国产另类不卡| 国产午夜精品久久久久久久| 99在线精品视频| 免费在线成人av| 欧美一区二区免费视频| 欧美性色aⅴ视频一区日韩精品| 一区在线观看| 久久国产天堂福利天堂| 一本色道久久综合亚洲精品按摩 | 国产精品萝li| 亚洲精品久久久久久久久久久久久 | 女女同性精品视频| 国产欧美精品在线观看| 一区二区91| 欧美福利在线| 久久久久九九九九| 国产日韩欧美不卡| 亚洲影院色无极综合| 最近中文字幕mv在线一区二区三区四区| 亚洲精品女人| 久久精品国产免费看久久精品| 国产精品入口尤物| 亚洲在线不卡| 亚洲一区二区三区四区五区黄| 欧美日韩精品系列| 一本色道久久88精品综合| 免费成人性网站| 久久精品人人做人人爽| 国产午夜精品全部视频在线播放| 亚洲欧美精品一区| 亚洲小说春色综合另类电影| 欧美日韩在线免费观看| 亚洲视频一区在线观看| 亚洲激情视频在线观看| 欧美成人蜜桃| 日韩系列欧美系列| 亚洲欧洲在线播放| 欧美精品一区二区三| 99一区二区| 一本色道久久综合狠狠躁篇的优点| 欧美日韩一区综合| 亚洲砖区区免费| 亚洲免费在线视频| 国产农村妇女精品一二区| 久久精品国产免费观看| 久久国产精品久久w女人spa| 又紧又大又爽精品一区二区| 欧美激情一区在线| 欧美日韩国产综合一区二区| 亚洲欧美日韩一区| 亚洲欧美美女| 在线观看成人网| 最新国产の精品合集bt伙计| 国产精品大全| 美女诱惑一区| 欧美三级资源在线| 久久久久国内| 欧美精品色综合| 欧美主播一区二区三区美女 久久精品人| 欧美伊久线香蕉线新在线| 亚洲人成在线观看一区二区 | 亚洲国产cao| 欧美日韩精品免费| 久久久久久成人| 欧美日韩国产一区二区| 久久久久网址| 欧美午夜不卡| 欧美成人免费在线视频| 国产精品成人观看视频免费| 久久久久久尹人网香蕉| 欧美日韩大片| 免费在线视频一区| 国产精品分类| 亚洲精品1234| 国际精品欧美精品| 99视频日韩| 亚洲精品欧美在线| 久久精品国产精品 | 亚洲人成网站精品片在线观看| 国产精品九九| 亚洲国产精品va在看黑人| 国产精品视频免费观看www| 欧美成人综合| 国产一区二区三区在线观看精品| 亚洲精品在线一区二区| 在线观看成人网| 亚洲欧美另类在线| 亚洲图片欧洲图片av| 老司机午夜精品| 久久久国产亚洲精品| 欧美日韩一区二区三区四区五区| 免费亚洲网站| 韩日视频一区| 欧美一二三视频| 亚洲欧美中文日韩在线| 欧美人与性动交a欧美精品| 欧美1级日本1级| 伊人天天综合| 久久久夜精品| 免费观看成人www动漫视频| 国产午夜亚洲精品不卡| 亚洲免费在线| 久久精品国产亚洲a| 国产欧美69| 欧美在线免费一级片| 久久久999精品视频| 国产一区在线看| 久久精品视频在线免费观看| 久久久久女教师免费一区| 激情国产一区| 久久综合网色—综合色88| 欧美大片一区| 日韩一级裸体免费视频| 欧美日韩一区二区三区| 亚洲女人天堂成人av在线| 久久精品人人做人人爽| 永久域名在线精品| 欧美成人一品| 亚洲视频 欧洲视频| 欧美在线一区二区三区| 激情亚洲成人| 欧美精品一区二区视频| 亚洲午夜精品久久久久久浪潮| 欧美一级专区免费大片| 精品av久久707| 欧美激情精品久久久久久蜜臀 | 久久一日本道色综合久久| 韩国一区电影| 欧美激情黄色片| 一区二区三区 在线观看视频| 亚洲视频视频在线| 国产亚洲电影| 欧美成人午夜视频| 亚洲视频在线观看免费| 久久嫩草精品久久久精品| 亚洲日本va午夜在线电影| 欧美视频一区二区三区| 欧美在线看片a免费观看| 欧美激情一区二区三区全黄| 亚洲综合色婷婷| 经典三级久久| 欧美日韩在线高清| 久久国内精品视频| 亚洲看片网站| 久久日韩粉嫩一区二区三区| 亚洲精品欧美| 国产色视频一区| 欧美伦理91| 久久夜精品va视频免费观看| 一区二区三区色| 欧美大片在线看| 亚洲欧美中文日韩v在线观看| 亚洲国产一区二区三区青草影视| 国产精品欧美久久| 欧美成人资源| 久久麻豆一区二区| 亚洲免费中文| 一区二区动漫| 亚洲日本久久| 欧美激情1区| 麻豆视频一区二区| 久久国产日韩欧美| 亚洲影音一区| 一本久道久久综合婷婷鲸鱼| 在线电影欧美日韩一区二区私密| 国产精品一区久久久| 欧美日韩午夜在线| 欧美不卡高清| 欧美凹凸一区二区三区视频| 久久五月激情| 久久久亚洲影院你懂的| 久久激情综合|