精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品国产一区二区三区久久久蜜月| 欧美国产综合一区二区| 欧美精品福利视频| 国产白嫩美女无套久久| www.日韩| 综合分类小说区另类春色亚洲小说欧美 | 国产精品无码一区二区三区免费| 桃花岛成人影院| 亚洲欧洲www| 国精产品一区二区| 伊人影院中文字幕| 在线国产欧美| 中文字幕亚洲无线码a| 无套内谢丰满少妇中文字幕| 欧美亚洲日本精品| **网站欧美大片在线观看| 精品午夜一区二区三区| 国产精品久久久久久免费播放| 伊人久久大香线蕉综合热线| 一本色道久久88精品综合| 国内精品国产三级国产aⅴ久| 日本а中文在线天堂| 自拍偷拍亚洲欧美日韩| 免费看污久久久| 99久久精品国产成人一区二区 | 久久久久久久久久久免费视频| 在线观看a视频| youjizz国产精品| 国产精品自拍偷拍| 黄色片免费观看视频| 亚洲国产日韩欧美在线| 亚洲一二在线观看| 中文字幕人妻一区二区三区| 在线日韩三级| 欧美亚州韩日在线看免费版国语版| 日韩a级黄色片| 日韩精品毛片| 国产日产亚洲精品系列| 精品久久久久久亚洲| 99国产精品99| 久久99热国产| 国产精品免费视频久久久| 日本少妇激情视频| 欧美成人嫩草网站| 久久视频国产精品免费视频在线| 丁香激情五月少妇| 亚洲理论电影片| 亚洲国产一区二区三区四区| 色黄视频免费看| 伊人久久大香| 欧美色精品天天在线观看视频| 无码播放一区二区三区| 国产在线拍揄自揄拍视频 | 日本不卡视频在线| 日韩69视频在线观看| 青青草成人av| 国产日韩精品视频一区二区三区| 久久久久在线观看| 久久精品国产亚洲AV无码男同| 欧美日韩国产精品一区二区亚洲| 久久精品免费播放| 麻豆明星ai换脸视频| 91精品国产91久久久久久密臀 | 欧美无砖砖区免费| 亚洲综合在线网站| 国产成人精品一区二三区在线观看 | 国产第一页在线视频| 一区二区三区小说| 国产自产在线视频| av免费不卡国产观看| 亚洲国产一区二区在线播放| 91精品国产91久久久久麻豆 主演| 人妖欧美1区| 亚洲一区二区三区小说| 男人添女荫道口女人有什么感觉| 操喷在线视频| 天天操天天干天天综合网| 久久久久久久激情| 欧美日韩尤物久久| 欧美片网站yy| 国产成人精品综合久久久久99| avtt综合网| 亚洲国产日韩欧美在线99| 亚洲熟妇一区二区三区| 精品美女久久| 久久人人爽亚洲精品天堂| 特级片在线观看| 亚洲高清电影| 国产精品av电影| 国产有码在线观看| 成人激情视频网站| 日韩av高清在线播放| 秋霞午夜在线观看| 亚洲国产精品综合小说图片区| 欧美视频在线免费播放| 成人在线网站| 欧美一级日韩免费不卡| 变态另类丨国产精品| 日韩精品午夜| 欧美激情在线观看| 91在线视频免费播放| 国内精品在线播放| 九9re精品视频在线观看re6| 岛国在线大片| 亚洲一区二区三区免费视频| 激情综合网婷婷| 国产亚洲精aa在线看| 日韩av最新在线观看| 在线不卡av电影| 午夜久久福利| 国产精品精品一区二区三区午夜版| 国产三级第一页| 91年精品国产| 青草全福视在线| 成人免费看黄| 亚洲成成品网站| 成年人视频软件| 先锋a资源在线看亚洲| 成人av色在线观看| 久久久pmvav| 一区二区三区国产| 欧美美女性视频| 色婷婷精品视频| 欧美大片免费看| 在线免费一级片| 91丨porny丨国产| 成人毛片100部免费看| 成人精品电影在线| 亚洲国产高清高潮精品美女| 日本高清不卡免费| 蜜桃91丨九色丨蝌蚪91桃色| 韩国成人动漫在线观看| av免费网站在线观看| 欧美日韩精品欧美日韩精品一| 疯狂揉花蒂控制高潮h| 欧美日本精品| 成人精品网站在线观看| 国产一级网站视频在线| 婷婷久久综合九色综合伊人色| www.色就是色.com| 不卡一区2区| 久久久久久噜噜噜久久久精品| 999久久久久| 中文幕一区二区三区久久蜜桃| 97在线免费公开视频| 久久精品国产亚洲5555| 九九热精品视频国产| 国产乱码精品一区二区三区精东| 国产三级一区二区| av五月天在线| 国产日产精品一区二区三区四区的观看方式 | 亚洲欧美在线另类| 中文字幕精品一区二区三区在线| 成人vr资源| 国产精品成人一区| yiren22综合网成人| 欧美最猛性xxxxx直播| 偷拍女澡堂一区二区三区| 国产精品婷婷| 久久亚洲一区二区| 欧美成人黑人| 国产一区二区三区18| 中文字幕免费视频观看| 日本一区二区三区四区在线视频 | 五月婷婷六月香| 免费高清视频精品| 亚洲综合激情五月| 免费一级欧美片在线观看网站| 美女黄色丝袜一区| 亚洲精品国产精品国| 亚洲福利视频导航| 中国毛片在线观看| 热久久一区二区| 中文一区一区三区免费| 国产精品久久久久久av公交车| 久久天天躁狠狠躁老女人| www.黄色一片| 午夜精品福利视频网站| 瑟瑟视频在线观看| 蜜臀久久99精品久久久久久9| 一区二区精品国产| 亚洲高清在线一区| 97在线看免费观看视频在线观看| 青草久久伊人| 欧美日韩精品系列| 国产大学生自拍| eeuss国产一区二区三区| 国产a级片免费观看| 欧美大片aaaa| 国产精品久久久久久免费观看| 久久久男人天堂| 视频在线一区二区| 亚洲经典一区二区三区| 日韩欧美高清视频| 最新一区二区三区| 91在线观看高清| 日本人69视频| 亚洲每日更新| 一区二区在线观看网站| 精品淫伦v久久水蜜桃| 国产福利精品av综合导导航| av网站在线看| 亚洲色图激情小说| www.97av.com| 欧美主播一区二区三区| 欧美精品乱码视频一二专区| 久久精品日产第一区二区三区高清版| www.久久久久久久久久久| 99日韩精品| 在线免费观看成人| 蜜桃一区二区| caoporn国产精品免费公开| 欧美日韩免费看片| 欧美精品激情在线观看| 麻豆视频免费在线观看| 亚洲精品网站在线播放gif| 国产免费一区二区三区免费视频| 精品国产1区2区| 91视频综合网| 国产欧美视频在线观看| 国产黑丝一区二区| 国产黄色成人av| 在线观看日本一区二区| 免费精品视频| 国产成人一区二区三区别| 色综合五月天| 欧美久久综合性欧美| 成功精品影院| 亚洲最大av网| 四虎影视国产精品| 国产精品久久久久av| 麻豆成全视频免费观看在线看| 久久天堂电影网| 欧美私人网站| 中文字幕亚洲综合| 黄色免费在线播放| 亚洲免费影视第一页| 人妻无码一区二区三区久久99| 91精品国产色综合久久久蜜香臀| 国产精品欧美综合| 91黄色在线观看| 探花视频在线观看| 欧美日韩激情网| 亚洲精品www久久久久久| 亚洲综合视频网| 欧美日韩在线观看成人| 亚洲精品乱码久久久久久久久| 黄色免费一级视频| 中文字幕一区二区三区不卡| 中文字幕av久久爽一区| 久久精品免视看| 欧美一区二区三区粗大| 国产精品污www在线观看| 丰满的亚洲女人毛茸茸| 国产精品女人毛片| 999精品久久久| 成人免费视频在线观看| 日韩激情小视频| 亚洲天堂中文字幕| 中文字幕在线有码| 亚洲综合视频在线| 日韩精品视频播放| 精品国产精品自拍| 日本韩国欧美中文字幕| 色婷婷综合视频在线观看| 久久永久免费视频| 欧美精品日韩综合在线| 国产女同91疯狂高潮互磨| 欧美一级日韩免费不卡| 亚洲黄色在线播放| 日韩高清中文字幕| 国产中文在线视频| www.久久撸.com| av网站大全在线| 97国产精品人人爽人人做| 成人影院av| 国产欧美日韩高清| 视频精品二区| 久久免费看av| 欧美日韩中文字幕一区二区三区| 国产精品99久久久久久大便| 欧美一区国产在线| 黄色一级视频片| 日本中文字幕一区二区有限公司| 午夜视频在线网站| gogogo免费视频观看亚洲一| 欧美成人国产精品一区二区| 亚洲色欲色欲www| 日韩精品成人一区| 欧美性猛交一区二区三区精品| 国产日韩在线观看一区| 国产视频综合在线| 免费黄色网址在线观看| 久久免费高清视频| а√天堂资源国产精品| 成人91视频| 精品国产精品久久一区免费式 | 亚洲大胆av| 黄色高清无遮挡| 国产成人午夜视频| 精品无人区无码乱码毛片国产| 亚洲欧美一区二区久久| 亚洲欧美综合另类| 91精品国产综合久久精品| 天堂中文在线视频| 久久综合伊人77777尤物| 韩国主播福利视频一区二区三区| 91最新在线免费观看| 免费成人高清在线视频theav| 艳母动漫在线免费观看| 久久国产主播| 久久av一区二区三| 国产精品久久久久三级| 日韩美女黄色片| 91精品国产综合久久福利| 国产一二在线观看| 国语对白做受69| 国产不卡精品| 性欧美videosex高清少妇| 136国产福利精品导航网址| 中文字幕12页| 国产欧美一区二区精品久导航| 色网站在线播放| 日韩欧美资源站| 婷婷在线视频| 国产精品高清免费在线观看| 日韩av网站在线免费观看| 欧美日韩中文字幕在线播放| 青青草97国产精品免费观看| 人妻丰满熟妇aⅴ无码| 亚洲一区二区美女| 国产模特av私拍大尺度| 自拍偷拍亚洲区| 向日葵视频成人app网址| 久久久福利视频| 91久久视频| 99免费观看视频| 亚洲精品免费播放| 99久久亚洲精品日本无码 | 午夜av在线免费观看| 国产精选久久久久久| 精品99在线| 别急慢慢来1978如如2| 91社区在线播放| 国产精品999在线观看| 日韩hd视频在线观看| 免费毛片b在线观看| 国产成人免费电影| 激情久久综合| 亚洲一区二区三区四区av| 亚洲综合丁香婷婷六月香| 性生活视频软件| 欧美黄色www| 大奶一区二区三区| 久久国产精品网| 北条麻妃国产九九精品视频| 精品成人免费视频| 日韩大片免费观看视频播放 | 国产精品第七十二页| 国产午夜一区| 岛国毛片在线播放| 亚洲色图欧洲色图| 午夜精品久久久久久久96蜜桃| 欧美精品久久一区二区| 精品欠久久久中文字幕加勒比| 六月丁香激情网| 国产视频一区在线观看| 中文字幕乱码中文字幕| 日韩中文字幕网站| 国产一区二区久久久久| 大荫蒂性生交片| www.欧美日韩| 亚洲永久精品一区| 久久久www成人免费精品张筱雨 | 欧美少妇性性性| 好吊日视频在线观看| 国产精品久久久久久久久婷婷| 亚洲女同在线| 日本黄区免费视频观看| 91精品在线观看入口| √天堂8资源中文在线| 另类欧美小说| 蜜桃av噜噜一区| 精品一区在线视频| 亚洲免费影视第一页| 亚洲午夜剧场| 成人免费视频91| 国产欧美精品一区aⅴ影院 | а√在线中文网新版地址在线| 欧美日韩国产精品一卡| 精品制服美女丁香| 国产在线观看99| 中文字幕av一区二区三区谷原希美| 91麻豆精品| 久久久999视频| 1000部国产精品成人观看| 亚洲色图另类小说| 川上优av一区二区线观看| 亚洲伦伦在线| 97成人资源站|