偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

基于Qt Web瀏覽器設(shè)計(jì)與實(shí)現(xiàn)

移動(dòng)開(kāi)發(fā)
由于嵌入式系統(tǒng)CPU 的處理能力、內(nèi)存有限, 本文通過(guò)去掉或裁剪大部分的輔助功能, 基于Q t/Em􀀁beded實(shí)現(xiàn)了簡(jiǎn)易的嵌入式Web瀏覽器。Q t /Embed􀀁ded本身面向高端的手持設(shè)備和移動(dòng)設(shè)備并且為用戶提供了良好的使用和交互環(huán)境, 已逐漸成為嵌入式系統(tǒng)的主流GU I之一。

嵌入式GU I的概況

嵌入式系統(tǒng)的迅速發(fā)展, 使得字符界面和簡(jiǎn)單的圖形界面不能再滿足一些嵌入式系統(tǒng)的要求。隨著硬件條件和用戶需求的提高, 嵌入式系統(tǒng)對(duì)圖形用戶界面(GraphicU ser Interface) 的需求會(huì)越來(lái)越迫切。由于GU I是嵌入式軟件系統(tǒng)中的基礎(chǔ)軟件, 獨(dú)立開(kāi)發(fā)需要投入大量的人力物力, 因此, 一批基于嵌入式Linux 的GU I系統(tǒng)就應(yīng)運(yùn)而生, 目前發(fā)展比較成熟的主要有:

(1)M icrow indow s[ 1] 系統(tǒng)提供了相對(duì)完善的圖形功能和一些高級(jí)的特性, 如A lpha混合、三維支持和TrueType字體支持等。M icrow indow s也有一些通用的窗口控件, 但其圖形引擎存在許多問(wèn)題: 無(wú)任何硬件加速能力; 圖形引擎中存在許多低效算法; 該項(xiàng)目缺乏一個(gè)強(qiáng)有力的核心代碼維護(hù)人員。

(2)M iniGU I[ 2] 是由北京飛漫軟件技術(shù)有限公司創(chuàng)辦的開(kāi)源L inux 圖形用戶界面支持系統(tǒng), 主要目標(biāo)是為基于L inux 的實(shí)時(shí)嵌入式系統(tǒng)提供一個(gè)輕量級(jí)的圖形用戶界面支持系統(tǒng)。M iniGU I有些遺憾的地方就是對(duì)輸入法的支持不是很好。

( 3)Q t /Embedded[ 3] : Q t是一個(gè)功能全面、可開(kāi)發(fā)高性能的、跨平臺(tái)的、C ++ 圖形用戶界面應(yīng)用程序框架[ 4] 。Qt由挪威Tro llTech公司出品。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所有功能。Q t是完全面向?qū)ο蟮? 很容易擴(kuò)展, 并且允許真正的組件編程。Qt的良好封裝機(jī)制使得Q t的模塊化程度非常高, 可重用性較好, 對(duì)于用戶開(kāi)發(fā)來(lái)說(shuō)是非常方便的。Qt 提供了一種稱為signals/ slo ts ( 信號(hào)/槽) [ 5􀀁7] 的安全類型來(lái)替代callback(回調(diào)函數(shù)) , 這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單。

2、 Q t平臺(tái)的搭建

在Q t的官方網(wǎng)站上下載最新的安裝包, 注意在安裝Q t的時(shí)候需要具備root用戶的安裝權(quán)限。下載安裝包后, 解壓包, 然后歸檔管理包。解壓完成后, 進(jìn)入解壓的相應(yīng)目錄。用. /configure 文件找到機(jī)器的

類型以方便在編譯的時(shí)候獲得很好的支持, 并且根據(jù)后面的選項(xiàng)來(lái)建立一個(gè)目錄, 可以使用􀀁prefix來(lái)定制目錄[ 11] 。具體代碼如下:

  1. # ta ra􀀁zxv faqt􀀁x11􀀁opensource􀀁desktop􀀁4. 3. 2. ta r. gz  
  2. # cd qt􀀁x11􀀁opensource􀀁desktop􀀁4. 3. 2  
  3. #. / con figure 􀀁pre fix= /usr / lo ca l  
  4. #m ake 

以上命令是建立有關(guān)的庫(kù)文件、編譯文件、幫助文檔、所需要的數(shù)據(jù)及指南等。

  1. #m ake insta ll 

執(zhí)行完命令后Q t就安裝在Linux 系統(tǒng)上了, 源代碼的編譯需要很長(zhǎng)的時(shí)間, 安裝完成之后需要對(duì)它進(jìn)行配置。修改環(huán)境變量:

  1. # v i /etc / pro file  
  2. # Add qt4. 3. 2 PATH  
  3. PATH = /usr / local/qt4. 3. 2 /bin: $ PATH  
  4. export PATH USER LOGNAME MA IL HOSTNAME H IST􀀁  
  5. SIZE INPUTRC 

為了使重新設(shè)置的環(huán)境變量生效, 運(yùn)行$ source/etc /prof ile, 上面的步驟是設(shè)置全局的環(huán)境變量, 也可以在$ home /. bash _pro fle進(jìn)行相應(yīng)設(shè)置, 然后用source ~ /. bash_pro fle使系統(tǒng)的環(huán)境變量重新生效。為了節(jié)省時(shí)間, 可以重新注銷一次讓環(huán)境變量生效。這時(shí)在終端上輸入$ assistan,t qt4. 3的幫助信息顯示出來(lái), 說(shuō)明安裝成功了。用$ echo $ PATH 可以查看qt4. 3. 2環(huán)境變量是否加載成功。

3、嵌入式瀏覽器的設(shè)計(jì)原則

3. 1 設(shè)計(jì)原則

嵌入式系統(tǒng)CPU 處理能力一般比較弱, 更重要的一點(diǎn)是內(nèi)存很有限, 因此嵌入在這些設(shè)備中的微型瀏覽器不可能像IE、F irefox、Max thon等瀏覽器一樣提供豐富多姿的多媒體服務(wù), 需要對(duì)Internet內(nèi)容做當(dāng)?shù)娜∩? 以降低其復(fù)雜性和代碼大小。瀏覽器的設(shè)計(jì)原則[ 12] 包括: 􀀂 限制圖形化內(nèi)容; 限制文本、用戶鏈接導(dǎo)航; ! 限制文本大小、利用空余空間; ∀限制(或消除)小部件的使用等。嵌入式瀏覽器的體系結(jié)構(gòu)如圖1所示。

基于Qt Web瀏覽器設(shè)計(jì)與實(shí)現(xiàn)

3. 2 瀏覽器模塊
由圖1瀏覽器的體系結(jié)構(gòu)[ 8] 可知, 大致可歸納為7個(gè)模塊組成:

( 1) User向She ll發(fā)出頁(yè)面請(qǐng)求后, 頁(yè)面的URL或本地文件名被發(fā)送到Shel;l

( 2) Shell調(diào)用IO 組件, 把URL傳達(dá)到IO 組件;

( 3) IO 組件使用HTTP協(xié)議或再調(diào)用本地IO 獲取HTML /XHTML源數(shù)據(jù), 返回She l;l

( 4) Shell把IO 返回的HTML /XHTML source提交HTML /XHTML分析器;

( 5)根據(jù)源碼構(gòu)建一棵DOM 樹(shù);

( 6)對(duì)DOM 樹(shù)描述的可視元素進(jìn)行布局, 安排位置、大小;

( 7)創(chuàng)建各類GU I控件。

4、應(yīng)用程序的實(shí)現(xiàn)

本文實(shí)現(xiàn)的是一個(gè)簡(jiǎn)易的嵌入式W eb 瀏覽器,此應(yīng)用程序可以移植到不同的微處理器上。該瀏覽器可以實(shí)現(xiàn)根據(jù)地址訪問(wèn)網(wǎng)站, 進(jìn)行頁(yè)面的瀏覽并可以保存最近瀏覽過(guò)的網(wǎng)址等功能。

#p#

4. 1 界面設(shè)計(jì)

主要介紹瀏覽器的界面設(shè)計(jì)。根據(jù)設(shè)計(jì)的原則,界面設(shè)計(jì)簡(jiǎn)潔方便, Q t Designer[ 9􀀁11 ] 是設(shè)計(jì)窗口組件(W idget)的應(yīng)用程序, 包含很多Q t組件的可視化界面。在界面的上端設(shè)計(jì)了兩個(gè)Too l Button用來(lái)選擇頁(yè)面的后退與前進(jìn), 一個(gè)L ine E dit用來(lái)輸入所需訪問(wèn)頁(yè)面的地址, 在L ine Ed it的下面添加一個(gè)S tackedW idget用來(lái)顯示網(wǎng)頁(yè)的內(nèi)容, 同時(shí)在界面底部添加還包括一個(gè)Progress Bar顯示頁(yè)面加載的進(jìn)度。主界面如圖2所示。

基于Qt Web瀏覽器設(shè)計(jì)與實(shí)現(xiàn)

4. 2 具體功能的實(shí)現(xiàn)

在Q t /Embeded的應(yīng)用程序中, QM ainW indow 聲明Ma inW indow 類來(lái)作為用戶的界面, 窗口界面使用Q t設(shè)計(jì)器來(lái)完成, 在這里使用一些信號(hào)與槽來(lái)操作事件, 并提供了用戶界面的元素[ 13-14] 。在構(gòu)造函數(shù)當(dāng)中提供了用戶的界面、進(jìn)度對(duì)話框和類似于狀態(tài)欄的幾個(gè)按鈕。下面具體介紹各功能槽函數(shù)的實(shí)現(xiàn)。具體實(shí)現(xiàn)過(guò)程如下:

使用goPrev ious( )函數(shù)來(lái)實(shí)現(xiàn)頁(yè)面的后退功能:

  1. vo idM a inW indow: : goPrev ious( )  
  2. {  
  3. QW ebV iew a* v iew = dynam ic_cast< QW ebV iew* > ( _tab􀀁  
  4. Stack􀀁> currenWt idget( ) );  
  5. if ( v iew )  
  6. v iew􀀁> back( );  

使用goNext( )函數(shù)來(lái)實(shí)現(xiàn)頁(yè)面的前進(jìn)功能:

  1. vo idM a inW indow: : goNex t( )  
  2. {  
  3. QW ebV iew a* v iew = dynam ic_cast< QW ebV iew* > ( _tab􀀁  
  4. Stack􀀁> currenWt idget( ) );  
  5. if ( v iew )  
  6. v iew􀀁> forw ard( ) ;  

使用showHom e( )函數(shù)實(shí)現(xiàn)顯示主頁(yè)的功能、removeTab( )函數(shù)實(shí)現(xiàn)關(guān)閉當(dāng)前的頁(yè)面窗口:

  1. vo idM a inW indow: : rem oveTab( )  
  2. {  
  3. QW ebV iew a* v iew = dynam ic_cast< QW ebV iew* > ( _tab􀀁  
  4. Stack􀀁> currenWt idget( ) );  
  5. if ( v iew )  
  6. {  
  7. _carouse l􀀁> rem oveItem ( view) ;  
  8. _tabStack􀀁> rem oveW idget( v iew );  
  9. de le te v iew;  
  10. }  

【編輯推薦】

淺談Qt做文件瀏覽器

在Qt中如何寫(xiě)控制臺(tái)程序

Qt 平臺(tái)中使GUI保持響應(yīng)流暢

瀏覽器對(duì)HTML5的兼容性分析

瀏覽器中使用“Linux 操作系統(tǒng)”

五大主流瀏覽器CSS3和HTML5兼容性大比拼

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-29 14:19:48

QtWebkit瀏覽器

2011-09-09 18:43:13

Qt Webkit瀏覽器

2020-08-16 08:51:22

WEB安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)欺騙

2011-06-10 16:44:17

Qt 瀏覽器

2013-11-22 09:58:36

2018-08-30 08:47:59

瀏覽器web服務(wù)器通信

2009-03-25 09:11:35

Firefox瀏覽器

2022-06-20 09:00:00

Web3加密貨幣區(qū)塊鏈

2019-03-10 20:55:11

瀏覽器Midori開(kāi)源

2011-08-29 14:27:33

QTWebkit瀏覽器

2009-06-22 14:06:00

java瀏覽器

2010-08-10 09:40:23

Flex與瀏覽器交互

2012-03-20 11:41:18

海豚瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動(dòng)瀏覽器

2012-06-11 10:54:44

瀏覽器全洞悉

2012-03-20 11:07:08

2023-04-13 08:37:58

ChatGPTDIVHTML

2011-04-27 13:25:35

瀏覽器

2018-12-03 08:46:36

Web瀏覽器SeleniumPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)