【正文】
小寫的 y 也比小寫的 a 要多占據(jù)下方的控件。 在窗體中打印文字時(shí),我們以 y 軸為頂部為準(zhǔn)輸出文字和圖片,因此超鏈的窗口也必須適應(yīng)這點(diǎn),以 x、 y 為坐標(biāo),鏈接字體的寬度和高度作為超鏈范 圍的寬、高來創(chuàng)建。在本設(shè)計(jì)的基礎(chǔ)上,如果想重畫整個(gè)畫面是不現(xiàn)實(shí)的,因?yàn)榇蛴〉钠胀ㄎ淖植⑽闯蔀閱为?dú)的類,難以在重畫之后恢復(fù)。由于加框和去框的過程中底部背景可能會(huì)受損,因此 hyperlink 類中添加一個(gè)小塊背景圖片的 QPixmap 作為補(bǔ)償使用。因此我改造了數(shù)據(jù)結(jié)構(gòu),加上一個(gè)末尾節(jié)點(diǎn),以空區(qū)域( 0, 0, 0, 0)為鏈接區(qū)域防止干擾其他正常的超級(jí)鏈接,定義 bool endlink屬性,并修改查找條件為 while( tempendlink==false),測(cè)試成功,不會(huì)再出現(xiàn)應(yīng)用程序出錯(cuò),點(diǎn)擊其他鏈接也能正常激活超級(jí)連接。 從鏈表頭循環(huán)直到最后一個(gè)節(jié)點(diǎn)。以 x 和區(qū)域的頭部 top()為坐標(biāo)輸出 landtext,即跳轉(zhuǎn)到的標(biāo)記 text 的所在處。 createland( int x,int y,QString landtext,QString text):跳轉(zhuǎn)點(diǎn)的創(chuàng)建 這個(gè)功能是用來創(chuàng)建一個(gè)新的跳轉(zhuǎn)落點(diǎn)。如此周而復(fù)始就可以正確的輸出所有的文字。雖然有 QFontInfo 類來統(tǒng)計(jì)一串字符的寬度,但畢竟不能靠寬度 /每個(gè)字符的寬度來獲得該段字符的字?jǐn)?shù)。該處的難點(diǎn)在于如何判斷在何處需要換行。由于看見各類瀏覽器在添加超長(zhǎng)的字串或超鏈時(shí)是自動(dòng)拉長(zhǎng)窗口大小,但是在本瀏覽器設(shè)計(jì)初期窗 口大小因?yàn)楸尘靶枰禺嫷葐栴},后來打算不使用這種方式。 這三個(gè)函數(shù)比較簡(jiǎn)單,不在下一節(jié)解釋。 繼續(xù)播放 mediastart():隱藏視頻菜單,停止刷新畫面繼續(xù)播放視頻。 如圖 22 圖 22 視頻菜單 兩個(gè)功能基本描述如下;在視頻開始播放以后,畫面停止刷新,并等待鼠標(biāo)點(diǎn)擊響應(yīng),點(diǎn)擊后可以暫停視頻,重新開始刷新畫面,出現(xiàn)視頻菜單。再者,由于移植的版本較低,沒有完善的交互功能,能做到的只有播放、停止。 主要功能的實(shí)現(xiàn)程序在后面的函數(shù)中解釋。因此將其做成可隱藏小窗體,用左上角一個(gè)小按鈕來控制隱現(xiàn)。在圖 21 里用英文表示為 reload。在圖 21 里用英文表示為 forward。在圖 21 里用英文表示為backward。在圖 21 里用英文表示為 open。新建窗口時(shí),先按鏈表的順序找到能前進(jìn)的最終結(jié)點(diǎn),然后順序把這些結(jié)點(diǎn)釋放,再創(chuàng)建新的結(jié)點(diǎn),關(guān)閉前進(jìn)按鈕。在點(diǎn)擊這四個(gè)按鈕時(shí),可以做出相應(yīng)的變化。 圖 21 隱現(xiàn)菜單的效果 后退、前進(jìn)、刷新、轉(zhuǎn)到四個(gè)按鍵和文本錄入框的實(shí)現(xiàn)與功能實(shí)現(xiàn):每個(gè)打開的窗口擁有雙向鏈表結(jié) 構(gòu),指向前一個(gè)窗口和后一個(gè)窗口。默認(rèn)字體為 times,大小為 12,背景圖片為空,最大字符高度maxweight 為當(dāng)前行字符中最高的一個(gè)。此處給出一個(gè)有關(guān)的參數(shù) nexttextplace,用于記錄輸出文字的位置(上、中、下)行間距默認(rèn)為 5個(gè)像素,文字、圖片邊框的顏色默認(rèn)為黑色,鏈接顏色默認(rèn)為藍(lán)色,點(diǎn)擊后的鏈接顏色默認(rèn)為紫色。 吉林大學(xué)學(xué)士學(xué)位論文 8 第二章 主要部分功能模塊的實(shí)現(xiàn) 本章內(nèi)容為實(shí)現(xiàn)各部分主體功能模塊,章節(jié)末尾附分模塊的簡(jiǎn)單測(cè)試過程。 LandPlace( x,y,w,h,name,endp)超鏈接落點(diǎn)類,同樣為除錯(cuò)添加 bool endland 來聲明鏈表尾結(jié)點(diǎn),雖然理論上只需要定位兩個(gè)參量 x, y,但是因?yàn)槠滏溄永^承于 QRect,且 w、 h 屬性便于輸入光標(biāo)定位,因此保留。同時(shí)為除錯(cuò),添加一個(gè) bool endlink 來聲明鏈表尾結(jié)點(diǎn)。 創(chuàng)建一個(gè)窗口超鏈:先用畫筆顯示一段加下劃線改變顏色的文字(或圖片),再創(chuàng)建 HyperLink 類,設(shè)置其功能為“窗口超鏈”。 涂改,畫筆的 eraseRect 功能,清除一個(gè)區(qū)域的內(nèi)容。 四、熟悉 Qt 的準(zhǔn)備工作 顯示一段文字:利用畫筆 的 drawText 功能,在當(dāng)前的光標(biāo)位置畫上文字。再者,文字和圖片的 HyperLink 類應(yīng)該用一個(gè)屬性區(qū)分開,便于實(shí)現(xiàn)超鏈文本點(diǎn)擊后變色的功能。當(dāng)超鏈文本在主窗口中創(chuàng)建的時(shí)候,同時(shí)創(chuàng)建一個(gè) HyperLink 類覆蓋文本區(qū)域并等待鼠標(biāo)事件,點(diǎn)擊后發(fā)送信號(hào)激活槽,槽中對(duì) link 的功能(跳轉(zhuǎn)、新開頁(yè)面)進(jìn)行判定實(shí)現(xiàn)。 三、超鏈接的設(shè)計(jì)實(shí)現(xiàn) 超鏈接作為 web 瀏覽器的一大特色是不能忽視的,因此必須實(shí)現(xiàn)它。改在子窗體上用畫板進(jìn)行文本輸出。例如: 480x360 的主窗體在右滾動(dòng) 100 單位之后,鼠標(biāo)移動(dòng)范圍數(shù)值由 0480變?yōu)?100580,而 textbrowser 的滾動(dòng)條則是無論滾動(dòng)多少都是在 0480 范圍 [11]。 接著又發(fā)現(xiàn),textbrowser 的滾動(dòng)條有嚴(yán)重的缺陷。然而, textbrowser 對(duì)背景色支持極不方便,需要設(shè)置許多位置,而且還會(huì)影響到字體的顏色。 二、文本輸出測(cè)試 起初有使用 textbrowser 進(jìn)行直接 html 解析轉(zhuǎn)換顯示,但是 發(fā)現(xiàn) 的textbrowser 的能力有限,超鏈接等都顯示為空白,還有一個(gè)換行符在文本框的末尾無法消除,因此放棄該想法。 標(biāo)簽:作為顯示測(cè)試,用途同上。這樣存放便于使用后退、前進(jìn)等功能。 主窗體:主要作為其他控件的容器。 一、創(chuàng)建控件 圖 11 Qtopia 的界面 吉林大學(xué)學(xué)士學(xué)位論文 6 圖 11 為 Qtopia 的運(yùn)行界面, 與 C++[23]、 VB 不同的是 Qt 創(chuàng)建完窗口就得重新編譯出能實(shí)現(xiàn)窗體的源碼,每次修改都要重新編譯比較復(fù)雜,因此我采用直 接在 vi 下書寫程序,在 Qt 模擬測(cè)試平臺(tái)上觀察結(jié)果。 mpg123 能播放大部分常用格式音樂 如 mp wav 等, Mplayer 可播放 flv、 mpeg mpeg avi等格式視頻,遺憾的是由于嵌入式系統(tǒng)限制不能播放 swf 和 rmvb。移植器件并未遇到特別大的困難。 軟件要求 編程環(huán)境: [9],交叉編譯器 , 。 顯示采用 320x240 點(diǎn)陣東華 寸液晶。 網(wǎng)絡(luò)接口電路:使用 DM9000E 100M 網(wǎng)絡(luò)接口芯片,用普通網(wǎng)線與以太網(wǎng)進(jìn)行連接。 IIS 音頻數(shù)據(jù)接口電路:芯片為 UDAl341TS,可把數(shù)字信號(hào)與模擬信號(hào)相互轉(zhuǎn)換,內(nèi)部提供 DSP 功能,用于輸出網(wǎng)頁(yè)中的音頻文件。 硬件要求 本設(shè)計(jì)重點(diǎn)在于軟件的設(shè)計(jì)開發(fā),在這里簡(jiǎn)單介紹一下硬件平臺(tái)的配置。 要求實(shí)現(xiàn)的功能暫定為:文本的輸出、圖片的輸出、超鏈接的識(shí)別和輸出、標(biāo)尺線的輸出、列表文字的輸出、字體的改變、背景與標(biāo)題的處理、背景音樂輸出、簡(jiǎn)單的視頻支持。 軟件界面采用 Qtopia 的 KDE 界面,其提供標(biāo)準(zhǔn)窗體、菜單、按鈕、以及窗體中繪制圖片、文字等功能。為了減少資源的開支,加上嵌入式瀏覽器的局限性,決定采用邊分析邊布局的方式。需要編寫一個(gè)分析標(biāo)記的程序,在分析標(biāo)記的同時(shí)在頁(yè)面上進(jìn)行元素的布局。 需求分析 瀏覽器的核心在于對(duì)腳本文件的正確解析 。 由于國(guó)內(nèi)嵌入式瀏覽器技術(shù)被少數(shù)幾家公司壟斷,市場(chǎng)前景良好,因此有必要從底層開始進(jìn)行設(shè)計(jì)。但是,從零開始開發(fā)一個(gè)大型軟件的工程量是巨吉林大學(xué)學(xué)士學(xué)位論文 4 大的,不是一個(gè)人在幾個(gè)月間可以實(shí)現(xiàn)的。 之后,就產(chǎn)生了從零開始編寫一個(gè)小型的嵌入 式瀏覽器的想法。這個(gè)方案是比較容易執(zhí)行的方案,然而,即使是開放源碼的瀏覽器內(nèi)核,也需要對(duì)原有源代碼進(jìn)行完整具體的分析才能明白如何在源碼的基礎(chǔ)上加以改進(jìn)。目前流行的手機(jī)瀏覽器僅有 UCweb 等少數(shù)幾款,數(shù)量極少, 市場(chǎng)空間較大。因?yàn)榫W(wǎng)絡(luò)流量問題,因此手機(jī)瀏覽器以“獲取足夠的信息”為前提,一般只能得到文字信息以及少量的圖片信息。作為 PDA 等小型掌上設(shè)備的網(wǎng)絡(luò)瀏覽器,其實(shí)功能已經(jīng)顯得足夠了。例如,字體不能更改、顯示不出某些格式的圖片、排版存在一些缺陷、一些圖形標(biāo)記 (如 hr)過于簡(jiǎn)化、不能正常播放音、視頻等等。例如網(wǎng)頁(yè)解析、信息發(fā)送接收等,能獲取處理過的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)信息,能比較完整的顯示一個(gè)網(wǎng)頁(yè)。 吉林大學(xué)學(xué)士學(xué)位論文 3 嵌入式瀏覽器的分 析 嵌入式系統(tǒng)的主流操作系統(tǒng)有 WinCE 和 Linux,因?yàn)楸驹O(shè)計(jì)使用的是 Linux系統(tǒng),在這里,我們對(duì)主流嵌入式瀏覽器 konqueror,以及一些手機(jī)上使用的小型瀏覽器的功能做簡(jiǎn)要分析。在 Linux 下主流的瀏覽器就是 Firefox,其對(duì)目前各種網(wǎng)頁(yè)的解析也是相當(dāng)完善的。 Mozilla FireFox的概述 該瀏覽器的前身是網(wǎng)景( NetScape)瀏覽器, NetScape 公司和微軟在取得NCSA 授權(quán)后各自開發(fā)的第一代瀏覽器,在瀏覽器大戰(zhàn)中最終不敵 IE 而后網(wǎng)景將瀏覽器源代碼重新改寫,推出了 Mozilla。用當(dāng)前的編程軟件,如 visual studio 下的 VC、 VB 等中的 activeX 控件可以比較容易的開發(fā)出來。 當(dāng) 前 Windows 下有許多所謂低開銷、多功能的瀏覽器,如騰訊 TT、 Maxthon、360 安全瀏覽器等,也是以 IE 瀏覽器作為內(nèi)核,加上一些定制的外部模塊來構(gòu)建的,這些瀏覽器僅僅是改變了界面、一些輸入輸出的過濾,以及線程的規(guī)劃,能起到減少資源消耗,防堵危險(xiǎn)信息等功能。然而完美的功能伴隨的是巨大的資源開銷,不僅是需要較大的存儲(chǔ)空間,運(yùn)行時(shí)還需要較大的內(nèi)存資源。對(duì)于當(dāng)今各種各樣的網(wǎng)頁(yè)已經(jīng)支持的相當(dāng)完美了。 Inter Explorer 支持 、 CSS Level 1, XML 和 DOM Level 1。 Inter Explorer 概述 Inter Explorer 是微軟公司推出的一款網(wǎng)頁(yè)瀏覽器 [10]。 鑒于 的軟件特性以及嵌入 式硬件平臺(tái)的特性,本瀏覽器對(duì)一些比較困難的問題做出了一定的妥協(xié)和折中考慮,盡量避免影響瀏覽器的整體效果。 本瀏覽器是從零做起,沒有使用其他瀏覽器作為內(nèi)核。并且做出了各功能模塊的測(cè)試。 本設(shè)計(jì)利用了 作為開發(fā)平臺(tái),構(gòu)建了瀏覽器的框架,再利用一些共享的外部程序來實(shí)現(xiàn)主流瀏覽器所具備的一些功能。它是用 C++編寫的源碼包,能夠方便的跨平臺(tái)移植。 Qt 作為 Nokia 公司的一個(gè)開源的源碼包,自 1996 年以來,已成為世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序基礎(chǔ),也是流行的 Linux 桌面環(huán)境 KDE 的基礎(chǔ)。必須經(jīng)過剪裁和關(guān)鍵部分的修改。 嵌入式系統(tǒng)雖然有體積小、速度快、功耗低等優(yōu)點(diǎn),但是不可避免的是存在運(yùn)算能力不如大型機(jī),外部設(shè)備不夠齊全等缺點(diǎn)。瀏覽器作為嵌入式設(shè)備與網(wǎng)絡(luò)對(duì)接的一個(gè)重要應(yīng)用軟件,在當(dāng)今正處于發(fā)展階段,只有少數(shù)公司擁有自主知識(shí)產(chǎn)權(quán)的嵌入式瀏覽器。 參考文獻(xiàn) ................................................................................................................... 33 吉林大學(xué)學(xué)士學(xué)位論文 1 引 言 隨著嵌入式技術(shù)的發(fā)展,高科技產(chǎn)品逐漸向著小型化,智能化的方向發(fā)展。 關(guān)鍵詞: 嵌入式、瀏覽器、 html 語(yǔ)法、 Qt 吉林大學(xué)學(xué)士學(xué)位論文 ii Abstract An embedded browser is always used in smallsized embedded equipment such as mobile phone,SetTop Box for digital TV,PDA,and advertisement broadcasts. They are small size, low power consumption,and the function they have can basically meet the need of people. Firstly, this paper analysis the fashion web browser on PC and embedded web browser such as konqueror and UCweb. Then give a parison between those browsers. At last, we give out a project design for our new embedded web browser. This paper introduced a method to achieve a browser with basic functions using a lower version designer named Qt also include the design philosophy and main algorithm. The main contents include the analysis of syntax of Qt and html language. And the achievement of each function module. The main algorithm is presented in this paper while the result of test will be given. What39。 在文中給出了