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

隨筆-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>
            亚洲精品少妇| 亚洲视频在线观看免费| 欧美激情亚洲另类| 国产一区二区三区在线观看视频 | 奶水喷射视频一区| 怡红院精品视频| 久久久不卡网国产精品一区| 久久裸体艺术| ●精品国产综合乱码久久久久| 久久久久久久久久久成人| 老色鬼久久亚洲一区二区| 亚洲国产精品欧美一二99| 欧美国产在线观看| 欧美成人高清视频| 亚洲国产婷婷香蕉久久久久久99| 久久9热精品视频| 欧美激情国产日韩| 欧美日韩国产成人| 国产一区二区三区久久| 欧美影院在线| 欧美a级片网| 一区二区三区高清| 国产亚洲欧洲一区高清在线观看| 久久精品夜夜夜夜久久| 亚洲精品视频在线观看免费| 篠田优中文在线播放第一区| 亚洲日本在线视频观看| 国产一区二区三区在线播放免费观看| 蜜臀久久99精品久久久久久9| 一区二区三区高清在线观看| 久久久精品久久久久| 亚洲午夜电影在线观看| 亚洲国产日韩在线| 精品1区2区3区4区| 国产精品一区二区黑丝| 国产精品久久国产愉拍| 欧美高清视频在线播放| 久久夜色撩人精品| 久久久久国产精品人| 亚洲欧美国产精品专区久久| 999在线观看精品免费不卡网站| 免费日韩一区二区| 欧美成年人视频网站| 久久一区中文字幕| 美女91精品| 欧美激情五月| 亚洲精品123区| 久久久999精品免费| 欧美一级理论性理论a| 性欧美精品高清| 久久久国产精品一区二区中文 | 美女91精品| 国产精品久久久91| 国内外成人免费激情在线视频网站| 国产精品免费视频观看| 国产精品女同互慰在线看| 欧美激情视频在线播放| 一区二区三区精品国产| 亚洲毛片在线看| 亚洲一级片在线看| 久久av二区| 欧美国产精品va在线观看| 亚洲福利视频网| 亚洲一区二区三区精品视频| 欧美在线视频免费| 欧美午夜精品久久久久久超碰| 国产精品天天摸av网| 亚洲福利电影| 久久九九免费视频| 一本色道久久综合亚洲精品高清 | 国产精品毛片va一区二区三区 | 久久久综合精品| 亚洲欧洲日夜超级视频| 亚洲一区二区在线| 免费一级欧美在线大片| 国产麻豆综合| 亚洲香蕉视频| 91久久国产综合久久91精品网站| 亚洲一区二区三区中文字幕在线| 久久久亚洲精品一区二区三区| 欧美日韩精品在线| 99riav国产精品| 欧美黄色一区二区| 欧美一区二区视频在线观看2020| 欧美日韩一本到| 99精品国产高清一区二区| 久久人人97超碰人人澡爱香蕉| 亚洲综合精品四区| 国产精品一区免费在线观看| 亚洲综合三区| 亚洲婷婷综合久久一本伊一区| 欧美日韩成人| 欧美国产日本在线| 久久国产精品毛片| 亚洲电影观看| 韩国一区电影| 性欧美超级视频| 欧美在线在线| 亚洲国产老妈| 99精品99久久久久久宅男| 欧美精品xxxxbbbb| 亚洲欧美另类中文字幕| 久久精品视频导航| 亚洲人线精品午夜| 一区二区三区毛片| 国内一区二区三区| 最新亚洲一区| 黄色成人在线观看| 一本色道久久综合亚洲精品小说 | 久久伊人亚洲| 欧美精品日韩精品| 久久三级视频| 欧美三级在线视频| 美女主播视频一区| 国产精品毛片大码女人| 亚洲第一区中文99精品| 国产精品中文字幕在线观看| 欧美激情中文字幕乱码免费| 国产精品实拍| 日韩午夜剧场| 亚洲经典一区| 久久精品一二三区| 欧美一区二区精品久久911| 欧美福利在线观看| 亚洲第一主播视频| 在线精品国精品国产尤物884a| 亚洲一区二区精品| 99在线精品视频在线观看| 久久久久国内| 久久久久国产成人精品亚洲午夜| 欧美精品一区二区三区在线播放 | 欧美综合国产| 国产精品国产三级国产普通话三级 | 一区二区三区久久网| 99热在这里有精品免费| 亚洲欧美国产不卡| 久久精品国产亚洲一区二区| 午夜久久电影网| 国产精品国产三级国产普通话蜜臀| 亚洲人成在线观看一区二区| 亚洲精选中文字幕| 欧美日韩的一区二区| 亚洲伦理中文字幕| 亚洲欧美精品在线观看| 欧美日韩在线观看视频| 亚洲性线免费观看视频成熟| 欧美在线免费播放| 在线观看一区欧美| 欧美片在线播放| 亚洲欧美日韩另类精品一区二区三区 | 久热re这里精品视频在线6| 国内精品视频一区| 免费永久网站黄欧美| 日韩午夜激情av| 欧美成人午夜激情在线| 亚洲婷婷国产精品电影人久久| 国产精品国产三级国产| 久久精品视频99| 亚洲视频一起| 亚洲电影第1页| 久久久午夜精品| 亚洲天堂网在线观看| 亚洲第一在线视频| 国产精品久99| 欧美精品电影| 久久夜色精品国产| 久久精品国产精品亚洲精品| 一区二区三区日韩精品| 蜜臀久久99精品久久久久久9 | 欧美国产先锋| 久久男人资源视频| 亚洲一区黄色| 亚洲无玛一区| 一区二区三区四区国产| 亚洲人成在线播放| 亚洲激情黄色| 日韩视频免费观看高清完整版| 亚洲第一区在线观看| 激情欧美一区| 亚洲美女中文字幕| 欧美成人国产| 男女精品视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久国产婷婷国产香蕉| 欧美视频四区| 久久久午夜视频| 欧美+日本+国产+在线a∨观看| 久久亚洲一区| 欧美连裤袜在线视频| 欧美日本不卡| 国产日本欧美一区二区三区| 国产一区二区三区奇米久涩| 国产三区二区一区久久| 依依成人综合视频| 日韩一区二区精品在线观看| 中文精品视频| 狂野欧美激情性xxxx欧美| 亚洲人成在线观看| 久久久久久久999精品视频| 欧美粗暴jizz性欧美20|