精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解基于Qt Webkit嵌入式BS架構設計

移動開發
基于QtWebkit嵌入式BS架構設計是本文要介紹的內容,主要介紹如何使用 QtWebkit 來實現嵌入式客戶端( browser ),而不關注 webkit 引擎的原理和任何效率問題。

基于Qt Webkit嵌入式BS架構設計是本文要介紹的內容,主要介紹如何使用 Qt Webkit 來實現嵌入式客戶端( browser ),而不關注 webkit 引擎的原理和任何效率問題。

重點關注如何使用遙控器去操作網頁中的元素(例如焦點移動,打開新的鏈接),這種應用在目前的 iptv 上應用非常廣泛,通過實現自己的 browser ,可以加載不同的風格的界面(即網頁),結合使用 qt 其他控件和 QtWebkit (框架)實現功能與界面***結合的產品。

一、嵌入式 BS 架構的優勢

嵌入式 bs 架構的設計與 pc 上的 bs 架構的區別:

1、pc 上無須自行設計瀏覽器,嵌入式需要對瀏覽器進行特殊處理。(如按鍵等)

2、嵌入式需要加上對遙控器的支持。(如 tv 遙控器)

3、pc 上支持的網頁元素比嵌入式要多。

4、嵌入式需要做多套網頁以適應不同屏幕的分辨率。

5、嵌入式需要考慮 page cache 和 flash 權衡的問題。

bs 架構比 cs 架構的優勢:

1、設計簡單。大部分界面和部分功能都在后臺服務器實現。

2、界面炫麗。使用網頁可以達到很炫的效果,顯示格式也非常好控制。

3、修改方便?;旧现恍栊薷木W頁就可以了。

4、可擴展性強。一個設計好的 browser 可以使用不同風格的網頁,如:加載 youku 看電影,加載土豆看電影(不過這比較困難,焦點通過遙控器的移動在網頁中鏈接,輸入框, button 之間是一個非常困難的過程,嵌入式 flash player 很少)。

二、QtWebkit 的優勢以及使用

QtWebkit 只是一個瀏覽器框架,其核心引擎時 webkit , QtWebkit 簡單的歸納為 webkit 的顯示界面,即表現層和邏輯層的關系。 QtWebkit 的優勢在于:

1、可移植性強。 Linux , windows , embedded linux 。

2、對 javascript 支持比較好。

3、對 css 支持比較全面。

4、封裝比較好,簡單易用。

需要用到 QtWebkit 時,需要在編譯 QT 源碼的時候,在 ./configure 加上 –webkit ,在編譯自己的應用程序時,需要在 .pro 文件加上 QT+=webkit ,或者直接改 Makefile 加上 -lQWebkit ,簡單的 browser 程序如下:

  1.        int main(int argc, char* argv[])   
  2. {   
  3.     QApplication app(argc,argv);   
  4.      QWebview *view = new QWebview ();   
  5.      view->setGeometry(0,0,1024,1000);   
  6.          view->load(QUrl("www.baidu.com"));   
  7.       view->show();   
  8.          return app.exec();   
  9. }  

3、通過鍵盤(遙控器)控制網頁元素

通過使用 QWebview , QWebFrame , QWebPage 類就基本上可以實現瀏覽器的所有功能,而我們重點關注是 QWebElement 這個類,該類封裝了網頁中 element ,即每個 <a></a> 就是一個 QWebElement 對象,不僅僅局限于 <a/>,<b/>,<head/> 等等都是一個 QWebElement ,而我們要通過遙控控制焦點的移動就需要調用 element.focus()( 注: qt 4.6 以后才有這個方法 ) 。

舉例說明:

需求 : 通過上下左右鍵來移動 baidu 中鏈接(即 <a> 元素),并改變相應鏈接的顏色。

實現分析:利用 QWebview 加載 baidu ,然后將 <a> 標簽全部提取出來,放在 QWebElement list 中,(注:需要加載網頁成功后才開始提取,否則會出現提取不到。即當 emit   signal loadFinished(bool) 后才開始提?。?。

重寫 QWebview 的 keyPressEvent 函數, QWebview 默認的上下左右鍵是當網頁顯示不下時滾動的處理,這點可通過源碼以及默認的處理看出來,但可以通過 tab 鍵實現焦點移動,當收到上下左右鍵時可通過把按鍵事件改為 Qt :: Key_Tab 鍵事件來實現焦點移動(示例程序不是通過這種方法)。

改變相應鏈接的顏色有很多方法,暫列舉 2 種:

1、當焦點挪動時恢復原聚焦的元素的 style ,給現聚焦的元素加上新的 style 。

2、自寫一個通明控件,當焦點聚焦時將改空間放在元素對應的位置。

代碼:

  1. #include "browser.h"   
  2. #include <stdio.h>   
  3. browser::browser(QWidget * parent/* = 0 */):QWebView(parent)   
  4.  
  5. {   
  6.     focusIndex = 0;   
  7.     frame=this->page()->currentFrame();   
  8.     frame->setScrollBarPolicy(Qt::Horizontal ,Qt::ScrollBarAlwaysOff);   
  9.     frame->setScrollBarPolicy(Qt::Vertical ,Qt::ScrollBarAlwaysOff);   
  10.     connect(this,SIGNAL(loadFinished(bool)),this,SLOT(loadPageFinish(bool)));   
  11.  
  12. /* set webview no transparent */   
  13.        QPalette palette(QColor(255,0,0));   
  14.        this->setPalette(palette);  
  15.        this->setAttribute(Qt::WA_OpaquePaintEvent, false);   
  16. }   
  17. browser::~browser()   
  18. {   
  19. }   
  20. QString ed = "";   
  21. void browser::loadPageFinish(bool finish)   
  22. {   
  23.     if (finish)   
  24.     {   
  25.         focusIndex = 0;   
  26.         QWebFrame  *frame=this->page()->currentFrame();   
  27.         QWebElement  document=frame->documentElement();   
  28.         //printf("%s%s/n",ed.toLocal8Bit().data(),document.tagName().toLocal8Bit().data());   
  29.         //examineChildElements(document);   
  30.        elementList.clear();   
  31.         elementList = document.findAll("a").toList();   
  32.         if (elementList.size() > focusIndex)   
  33.         {   
  34.             QWebElement element;   
  35.             element = elementList.at(focusIndex);   
  36.             if (element.hasAttribute("style"))   
  37.             {   
  38.                 preFocusStyle = element.attribute("style","");   
  39.             }   
  40.             element.setFocus();   
  41.             element.setAttribute("style", "background-color: #ff0000");   
  42.         }   
  43.     }   
  44.        /* set page transparent,so we can see view's background*/   
  45.        QPalette palette = this->palette();   
  46.        palette.setBrush(QPalette::Base, Qt::transparent);   
  47.        this->page()->setPalette(palette);   
  48. }   
  49. void browser::examineChildElements(const QWebElement &parentElement)   
  50. {   
  51.     ed += "  ";   
  52.     QWebElement element = parentElement.firstChild();   
  53.      while (!element.isNull())   
  54.     {   
  55.         printf("%s%s/n",ed.toLocal8Bit().data(),element.tagName().toLocal8Bit().data());   
  56.         if (element.hasFocus())   
  57.         {   
  58.             qDebug()<<element.tagName()<<"==============>";   
  59.         }   
  60.         if (element.toPlainText() == QString("hao123"))   
  61.         {   
  62.             element.setAttribute("style", "background-color: #ff0000");   
  63.             element.setFocus();   
  64.         };   
  65.         examineChildElements(element);   
  66.         if (ed.length()> 2)   
  67.         {   
  68.             ed.remove(0,2);   
  69.         }   
  70.         elementelement = element.nextSibling();   
  71.     }   
  72. }   
  73. void browser::keyPressEvent(QKeyEvent * ev)   
  74. {   
  75.     switch (ev->key())   
  76.     {   
  77.         case Qt::Key_Right:   
  78.         case Qt::Key_Left:   
  79.         {   
  80.             if (elementList.size() > focusIndex)   
  81.             {   
  82.                 QWebElement element = elementList.at(focusIndex);   
  83.                 if (!element.isNull())   
  84.                 {   
  85.                     if (element.hasAttribute("style"))   
  86.                     {   
  87.                          element.setAttribute("style", preFocusStyle);   
  88.                     }   
  89.                     focusIndex += 1;   
  90.                     if (elementList.size() == focusIndex)   
  91.                         focusIndex = 0;   
  92.                     element = elementList.at(focusIndex);   
  93.                     if (element.hasAttribute("style"))   
  94.                     {   
  95.                         preFocusStyle = element.attribute("style","");   
  96.                     }   
  97.                     element.setFocus();   
  98.                     element.setAttribute("style", "background-color: #ff0000");   
  99. //                     QLabel* label = new QLabel(this);   
  100. //                     label->setGeometry(element.geometry());   
  101. //                     label->setText("i am focus");   
  102. //                     label->show();   
  103. //                     label->raise();   
  104.                 }   
  105.             }   
  106.         }   
  107.         break;   
  108.         default:   
  109. QWebView::keyPressEvent(ev);   
  110. }   
  111. }  

總結:上述程序只能左移到上一個鏈接或者右移到下一個鏈接,這種控制焦點的方式在簡單的幾個鏈接的網頁比較合適,在需要精確的控制焦點移動時,***通過網頁本身去做(如調用 js 腳本等), QWebview 調用 js 腳本以及與 js 通信的示例資料網上很多,這里不做陳述。

小結:詳解基于Qt Webkit嵌入式BS架構設計的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-09-06 11:25:08

2011-06-21 11:10:28

Qt Embedded

2011-07-05 15:42:02

QT 嵌入式 Embedded

2011-07-05 15:59:18

Qt 嵌入式 linux

2011-06-13 14:00:55

Qt Designer linux

2011-06-14 11:48:38

Webkit QT

2009-12-09 10:50:53

嵌入式Linux

2009-12-24 17:21:38

嵌入式Linux

2009-05-27 19:28:20

Linux磁場設計

2023-01-04 09:37:16

2022-12-14 08:06:08

2014-05-26 15:14:04

DIGIA嵌入式Qt

2011-06-21 11:30:31

嵌入式 Qt

2011-06-09 10:28:54

QT 嵌入式

2009-12-23 10:33:30

Silverlight

2009-12-22 17:46:56

Fedora 9嵌入式

2013-01-21 10:26:13

2011-08-29 14:10:03

QtWebkitFlash

2023-11-29 07:51:40

嵌入式軟件設計

2023-07-16 22:48:59

點贊
收藏

51CTO技術棧公眾號

青草国产精品久久久久久| 亚洲一区二区三区四区电影| 欧美极品xxx| 成人午夜两性视频| 国产真实夫妇交换视频| 蜜桃一区二区三区| 8v天堂国产在线一区二区| 亚洲色欲久久久综合网东京热| 日批免费在线观看| 久久机这里只有精品| 欧美精品videos| 美国黄色特级片| 成人涩涩网站| 欧美日韩高清一区二区| 男人的天堂狠狠干| 男人资源在线播放| 91免费观看在线| 亚洲wwwav| 嫩草影院一区二区三区| 91久久夜色精品国产九色| 深夜福利日韩在线看| 国产精品一区二区人妻喷水| 日韩第二十一页| 大伊人狠狠躁夜夜躁av一区| 亚洲精品偷拍视频| 久久久久久青草| 成人福利视频网站| 成人做爰www免费看视频网站| 五月婷婷亚洲综合| 国内精品99| 日韩网站在线观看| 无码一区二区三区在线| 加勒比久久高清| 日韩免费在线观看| 爱豆国产剧免费观看大全剧苏畅 | 精品中文字幕在线| 免费一级特黄3大片视频| 日韩在线你懂的| 精品日韩一区二区三区| 色婷婷激情视频| 欧美天堂一区二区| 欧美特级限制片免费在线观看| 日韩av综合在线观看| 男男gaygays亚洲| 亚洲黄色在线视频| 国产精品啪啪啪视频| 婷婷在线视频| 国产精品福利电影一区二区三区四区 | 日韩最新免费不卡| 国产欧美小视频| 国产一区二区三区四区二区 | 1769在线观看| 国产农村妇女毛片精品久久麻豆| 欧美成人免费在线| 男人的天堂在线免费视频| 99精品欧美一区二区三区综合在线| 成人精品一二区| av免费在线不卡| 国内精品自线一区二区三区视频| 成人黄色av网站| 91丨porny丨在线中文 | 欧美美女性生活视频| 俺要去色综合狠狠| 中文字幕av一区二区三区谷原希美| 日韩av在线看免费观看| 国产影视一区| 日韩中文字在线| 最新一区二区三区| 欧美片第1页综合| 国模精品系列视频| 亚洲天堂视频网站| 人人精品人人爱| 成人精品一区二区三区| 亚洲av无码一区二区三区性色| 国产91高潮流白浆在线麻豆| 精品久久久久久一区| 欧美高清成人| 国产精品国产三级国产专播品爱网| 中文字幕一区二区三区最新 | 91精品久久久久久久久中文字幕 | 五月天激情国产综合婷婷婷| 视频一区在线视频| 成人免费在线视频网址| 免费国产精品视频| 久久美女高清视频| 欧美爱爱视频网站| 国产不卡人人| 欧美色图第一页| 国产伦理在线观看| 国产剧情一区| 欧美尺度大的性做爰视频| 欧美bbbbbbbbbbbb精品| 六月丁香综合在线视频| 波多野结衣一区二区三区在线观看 | 激情综合网五月天| 久久精品官网| 亚洲最大av在线| 午夜激情在线视频| 国产精品久久久久久户外露出| 国产亚洲精品久久久久久久| 欧美18av| 日韩精品一区二区三区中文精品| 色无极影院亚洲| 亚洲欧美综合| 国产精品久久久久久av福利| 性色av蜜臀av| 国产精品免费人成网站| 俄罗斯av网站| 精品久久久久久久久久岛国gif| 亚洲精品福利在线| wwwav国产| 日本不卡在线视频| 国产在线视频欧美一区二区三区| 午夜视频在线观看网站| 天天影视涩香欲综合网| 久久久福利影院| 国产精品一区2区3区| 国语对白做受69| 99国产精品一区二区三区| 久久蜜桃香蕉精品一区二区三区| 日韩精品一区二区三区四| jizz亚洲女人高潮大叫| 精品亚洲一区二区三区| 欧美精品成人久久| 精品在线你懂的| 日韩精彩视频| 在线最新版中文在线| 精品久久久网站| 好吊日在线视频| 日本vs亚洲vs韩国一区三区| 久久爱av电影| 国产夫妻在线| 亚洲国产一区二区三区四区| 久久国产精品波多野结衣av| 狠狠久久亚洲欧美| 一区高清视频| 国产精品毛片久久久久久久久久99999999| 日韩av影视在线| 激情综合网五月婷婷| 国产乱对白刺激视频不卡| 中国人体摄影一区二区三区| av在线播放一区| 在线成人激情视频| 性高潮视频在线观看| 久久奇米777| 国内外成人免费激情视频| 群体交乱之放荡娇妻一区二区| 久久久久女教师免费一区| 精品久久在线观看| 亚洲一区二区三区四区在线观看| 野花视频免费在线观看| 欧美精品综合| 国产精品传媒毛片三区| 成人免费网站观看| 日韩电影免费观看在线观看| 久久久无码一区二区三区| 丁香婷婷综合色啪| 欧美综合在线播放| 私拍精品福利视频在线一区| 欧美亚洲成人免费| 美女毛片在线看| 欧美视频日韩视频| 日本一级片免费| 国产精品88av| 国产视频九色蝌蚪| 免费成人高清在线视频theav| 日本一区二区三区在线播放| 黄色免费在线播放| 欧美日韩国产免费一区二区| 国产一区二区播放| 成人毛片视频在线观看| 久久久久狠狠高潮亚洲精品| 精品美女久久久| 91免费福利视频| 白白色在线观看| 亚洲精品资源在线| 在线观看免费视频一区| 亚洲欧美日韩综合aⅴ视频| 久久无码专区国产精品s| 99av国产精品欲麻豆| 热舞福利精品大尺度视频| 婷婷激情成人| 欧美俄罗斯乱妇| 免费一级在线观看播放网址| 欧美三区在线观看| 久久久久无码国产精品| 久久综合av免费| av噜噜在线观看| 亚洲精品1区| 亚洲日本精品| 精品嫩草影院| 国产欧美日韩精品在线观看| 电影k8一区二区三区久久 | 欧美四级电影在线观看| 欧美日韩在线视频免费播放| 2014亚洲片线观看视频免费| 手机免费av片| 香蕉成人久久| 日本精品福利视频| 国产尤物久久久| 国产a一区二区| 男人亚洲天堂| 欧美最顶级的aⅴ艳星| 成人午夜在线影视| 亚洲免费电影在线观看| 午夜精品久久久久久久99热黄桃| 91国偷自产一区二区三区成为亚洲经典 | 亚洲男女一区二区三区| 亚洲熟妇一区二区三区| 国产精品影视网| 噼里啪啦国语在线观看免费版高清版| 午夜精品视频| 亚洲欧洲免费无码| 亚洲精品456| 国产精品初高中精品久久| 免费成人黄色网| 日韩av电影手机在线| 国产亚av手机在线观看| 久久精品成人欧美大片古装| 久久久久久女乱国产| 精品1区2区在线观看| 国产日韩一级片| 欧美色大人视频| 潘金莲一级淫片aaaaaa播放| 婷婷中文字幕综合| 国产在线一二区| 亚洲黄色性网站| 蜜桃视频最新网址| 国产欧美日韩三区| 久久久久久久久久久久| 91在线免费视频观看| 丝袜熟女一区二区三区| 国产精品456露脸| 亚洲自拍第三页| 激情欧美一区二区三区在线观看| 老熟妇仑乱视频一区二区| 国产日韩一区二区三区在线播放| 久草视频这里只有精品| 欧美日韩网址| 日韩一级免费看| 欧美日韩1区| 成人国产在线看| 欧美二区视频| 青青视频免费在线| 欧美激情视频一区二区三区在线播放 | 99精品视频网| 日韩欧美国产免费| 国产欧美在线| 亚洲国产精品久久久久爰色欲| 一区二区三区导航| 国产精品秘入口18禁麻豆免会员| 亚洲日本免费| 国内外成人激情视频| 亚洲在线观看| 老司机午夜av| 卡一卡二国产精品| 国产又粗又猛大又黄又爽| 国产成人午夜片在线观看高清观看| 成人三级做爰av| av中文字幕不卡| 国产激情在线免费观看| 国产日韩v精品一区二区| 大胸美女被爆操| 亚洲日本成人在线观看| 久久久久亚洲AV| 欧美性xxxxx极品娇小| 成人免费视频国产免费| 欧美日韩国产欧美日美国产精品| 精品国产无码一区二区| 亚洲国产成人在线播放| 久热av在线| 久久久av网站| 成年男女免费视频网站不卡| 国产精品久久电影观看| 96视频在线观看欧美| www.成人av.com| 国产日产一区| 青少年xxxxx性开放hg| 亚洲精品123区| 手机视频在线观看| 国产成人精品1024| 国产熟妇久久777777| 国产精品国产三级国产aⅴ无密码| 国产极品国产极品| 懂色aⅴ精品一区二区三区蜜月| www.亚洲激情| 精品国产乱码久久久久久免费| 视频在线不卡| 久久综合电影一区| 国模冰冰炮一区二区| 91久久嫩草影院一区二区| 欧美顶级毛片在线播放| 婷婷五月色综合| 亚洲东热激情| 日韩高清第一页| 97久久人人超碰| 国产大片免费看| 91久久精品一区二区| aaa级黄色片| 在线观看国产精品91| 免费污视频在线观看| 国产精品久久国产精品99gif| 日韩一区二区三区在线看| 日韩资源av在线| 亚洲巨乳在线| 人妻激情偷乱视频一区二区三区| 久久综合色婷婷| 久久综合激情网| 欧美猛男超大videosgay| 三级国产在线观看| 欧美国产在线视频| 亚洲爽爆av| 天天综合狠狠精品| 亚洲一区二区三区免费在线观看 | wwwxxx黄色片| a级精品国产片在线观看| 成人在线观看免费完整| 欧美日韩在线免费视频| 头脑特工队2免费完整版在线观看| 不卡av在线播放| 欧美视频精品| 日韩欧美99| 久久中文在线| 亚洲精品乱码久久久久久不卡| 一区二区三区不卡在线观看 | 97久久精品人人做人人爽50路| 天天综合天天做| 欧美日韩成人综合天天影院| 狠狠色伊人亚洲综合网站l| 97av在线视频| 久久午夜影院| 青青草成人免费在线视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产欧美日韩麻豆91| 久久精品五月天| 亚洲性生活视频| av有声小说一区二区三区| 看高清中日韩色视频| 99视频精品免费观看| 亚洲美女在线播放| 五月激情综合网| 五月天久久久久久| 欧美自拍大量在线观看| 日韩丝袜视频| 能看的毛片网站| 欧美国产日韩a欧美在线观看| 国产一级片毛片| 亚洲色图35p| 日韩漫画puputoon| 色乱码一区二区三在线看| 蜜桃视频一区| 老头老太做爰xxx视频| 日本韩国一区二区三区| 成人免费黄色av| 国产精品毛片aⅴ一区二区三区| 欧美重口乱码一区二区| 日产国产欧美视频一区精品| 中国女人特级毛片| 欧美日韩精品欧美日韩精品一| 男人天堂久久久| 99热在线播放| 99精品视频免费全部在线| 日本xxxxxxxxx18| 欧美日韩国产区一| 高清电影在线观看免费| 久久久久久国产精品mv| 丝袜美腿一区二区三区| 一本一本久久a久久| 日韩免费看网站| 丝袜诱惑一区二区| 亚洲高清视频在线观看| 国产一区二区影院| 国产无码精品在线观看| 亚洲视频在线免费看| 亚洲一区二区av| av在线播放天堂| 国产亚洲人成网站| 91精品视频免费在线观看| 欧美黄色成人网| 你懂的一区二区三区| 污污视频网站在线| 岛国精品视频在线播放| 久久精品视频观看| 黄色小网站91| 美女免费视频一区| 久久国产在线视频| 亚洲天堂av图片| 日韩在线视频一区二区三区| 免费在线激情视频| 最新久久zyz资源站| 亚洲 欧美 精品| 91久久精品国产91久久| 国产精品毛片在线| 色哟哟一一国产精品| 亚洲精品一区在线观看香蕉| www999久久| 日韩av一二三四| 亚洲综合一区在线| 在线视频二区| 欧美激情第六页|