国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于InterView框架柔性表格組件的設(shè)計(jì)與實(shí)現(xiàn)

2011-03-15 14:30孟繁軍李慧哲
關(guān)鍵詞:錯(cuò)字視圖字形

孟繁軍, 李慧哲, 林 民

(內(nèi)蒙古師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,內(nèi)蒙古呼和浩特 010022)

目前,世界上出現(xiàn)了學(xué)習(xí)“漢語(yǔ)熱”現(xiàn)象,漢語(yǔ)教學(xué)和漢語(yǔ)推廣工作者發(fā)現(xiàn),學(xué)習(xí)漢字是漢語(yǔ)學(xué)習(xí)的瓶頸,而初學(xué)漢字者極易將漢字寫(xiě)錯(cuò)[1]。然而,計(jì)算機(jī)系統(tǒng)中還沒(méi)有一種對(duì)錯(cuò)字進(jìn)行輸入輸出及有效管理的可行方案,也沒(méi)有較好地解決正字與錯(cuò)字同文顯示輸出、錯(cuò)字深層次處理問(wèn)題[2]。目前處理錯(cuò)字的方法主要有:利用圖片嵌入文本顯示輸出;利用造字程序制作錯(cuò)字字模和輸入法鏈接實(shí)現(xiàn)顯示輸出[3]。以圖片方式顯示錯(cuò)字的方法不支持與常用漢字一樣的檢索和深層次加工處理,而制作字模比較復(fù)雜,同時(shí)自造錯(cuò)字占用用戶(hù)預(yù)留編碼區(qū),可選擇的范圍有限。文獻(xiàn)[4]提出了筆段網(wǎng)格漢字字形描述法,該方法提供了描述一切可能漢字字形(包括錯(cuò)字)骨架的能力,但該方法存在的問(wèn)題嚴(yán)重影響了在數(shù)據(jù)庫(kù)中對(duì)錯(cuò)字字形和標(biāo)注文本的統(tǒng)一交互處理。

本文介紹了一種基于Qt的InterV iew框架的表格組件設(shè)計(jì)實(shí)現(xiàn)方法,可以在表格單元中顯示、編輯自定義類(lèi)型數(shù)據(jù),從而實(shí)現(xiàn)這些數(shù)據(jù)的統(tǒng)一布局和交互處理。實(shí)際系統(tǒng)使用表明,該表格組件可擴(kuò)展性強(qiáng),對(duì)多類(lèi)型數(shù)據(jù)統(tǒng)一布局處理界面的設(shè)計(jì)和實(shí)現(xiàn)、建立復(fù)雜交互處理應(yīng)用[5,6]具有實(shí)用意義。

漢字網(wǎng)格字形是一種采用平面網(wǎng)格結(jié)構(gòu)來(lái)描述漢字字形本質(zhì)特征的形式化方法。網(wǎng)絡(luò)結(jié)構(gòu)描述定義為:漢字字形網(wǎng)格[7]是由n×n個(gè)小正方形組成的大正方形;每個(gè)小正方形區(qū)域內(nèi)含有28個(gè)筆段;各頂點(diǎn)到它所在邊中點(diǎn)的連線共8段;各頂點(diǎn)到它對(duì)邊中點(diǎn)的連線,以連線中點(diǎn)為界分為2個(gè)筆段,共16段;對(duì)角線以中點(diǎn)為界分為2個(gè)筆段,共4段;整個(gè)網(wǎng)格有24n2+4n個(gè)筆段;網(wǎng)格中的每個(gè)筆段可以取有線和無(wú)線2種狀態(tài),所有有線筆段分布構(gòu)成了漢字的筆段網(wǎng)格字形。

實(shí)驗(yàn)表明,n=12時(shí),可以表示絕大多數(shù)漢字的字形;n=16時(shí),可以表示所有的字形。例如“爨”采用16×16的網(wǎng)格字形描述,如圖1所示。

圖1 筆段網(wǎng)格字形描述及舉例

1 In terView框架簡(jiǎn)介

InterView是 Q t4.0推出的一個(gè)類(lèi)似于MVC模型的框架[8,9],主要由模型(M odel)、視圖(V iew)和代理(Delegate)3部分組成,其結(jié)構(gòu)如圖2所示。

圖2 InterView框架結(jié)構(gòu)

模型(M odel)和數(shù)據(jù)源(Date Source)通信,并為其它部件提供接口。視圖的主要功能是負(fù)責(zé)把數(shù)據(jù)按布局要求(表格、樹(shù)型等)展示給用戶(hù),也處理用戶(hù)的編輯和輸入,它從模型中獲得模型索引(M odel Index),通過(guò)模型索引來(lái)引用要顯示的數(shù)據(jù)條目。視圖通過(guò)代理來(lái)繪制數(shù)據(jù)條目,當(dāng)編輯條目時(shí),代理和模型直接進(jìn)行通信。數(shù)據(jù)發(fā)生改變時(shí),模型發(fā)出信號(hào)通知視圖,若用戶(hù)對(duì)界面進(jìn)行了操作,視圖則發(fā)出信號(hào)通知代理,代理再發(fā)出信號(hào)告知模型和視圖目前的狀態(tài)。

InterView模型定制的結(jié)構(gòu)與其它一些工具的組件相比,具有更大的靈活性和可擴(kuò)展性,并且用戶(hù)可以通過(guò)代理的代碼完成自定義數(shù)據(jù)類(lèi)型的繪制,因此,對(duì)于軟件界面按統(tǒng)一布局實(shí)現(xiàn)矢量圖形的顯示、自定義類(lèi)型數(shù)據(jù)的處理就更加靈活多樣。在傳統(tǒng)的開(kāi)發(fā)工具中提供的控件,比如微軟的表格控件(Grid),由于采用數(shù)據(jù)、繪制和布局顯示一體化的方式,所以只有對(duì)系統(tǒng)預(yù)定義的類(lèi)型才能顯示在表格的數(shù)據(jù)項(xiàng)中,而非標(biāo)準(zhǔn)的一些數(shù)據(jù)類(lèi)型很難在表格上以統(tǒng)一布局來(lái)顯示相應(yīng)的內(nèi)容。

在實(shí)際應(yīng)用中,利用Q t中的M odel/V iew架構(gòu),程序員重新編寫(xiě)代理類(lèi)的paint函數(shù)后,就可以在Q t的表格組件的單元格上顯示出一些非預(yù)定義類(lèi)型的數(shù)據(jù)項(xiàng),比如位圖、各種矢量圖形數(shù)據(jù)、特殊字形等。本文正是通過(guò)Q t的這種代理類(lèi)機(jī)制,很好地解決了在Qt表格中按統(tǒng)一布局風(fēng)格繪制位圖、網(wǎng)格字形及文本的功能。

2 表格中繪制自定義類(lèi)型的方法

根據(jù)InterView模型可知,在Q t下實(shí)現(xiàn)繪制自定義類(lèi)型或特殊類(lèi)型的數(shù)據(jù)項(xiàng)時(shí),需要分別設(shè)計(jì)代理類(lèi),并重寫(xiě)paint函數(shù)和sizeH int函數(shù),定義模型獲取數(shù)據(jù)源,最后通過(guò)代理類(lèi)完成視圖中相應(yīng)內(nèi)容的繪制。本文以在表格(QTableView)視圖中實(shí)現(xiàn)定制表格組件繪制為例,說(shuō)明在視圖中定制組件的技術(shù)方法。

2.1 重載Delegates類(lèi)的paint函數(shù)

代理負(fù)責(zé)管理項(xiàng)目的輸入和項(xiàng)目的繪制,Qt中使用抽象類(lèi)QAbstractItemDelegate作為代理類(lèi)的基類(lèi),大部分情況下,可以直接從Qt已經(jīng)實(shí)現(xiàn)的通用QItemDelegate類(lèi)繼承,這樣可以使用它提供的上述函數(shù)的缺省實(shí)現(xiàn),以減少代碼量。

在本例中,由于數(shù)據(jù)源提供給模型的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,因此,使用繼承于QItemDelegate類(lèi)的QSq lRelationalDelegate派生出新的代理類(lèi)hzTableDelegate。同時(shí),為了實(shí)現(xiàn)定制組件的繪制,必須重新實(shí)現(xiàn)paint函數(shù)。paint函數(shù)完成了從數(shù)據(jù)庫(kù)讀取相應(yīng)的矢量數(shù)據(jù)后,按照對(duì)應(yīng)的顯示區(qū)域,在QTableView中指定的位置重新繪制出信息結(jié)果,同時(shí)對(duì)于存儲(chǔ)在計(jì)算機(jī)的位圖等圖形信息也可以通過(guò)paint重新繪制。具體實(shí)現(xiàn)的主要代碼[10]為:

2.2 模型的實(shí)現(xiàn)

模型為視圖和代理提供了標(biāo)準(zhǔn)的接口。Qt中所有模型都是基于QAbstractItemM odel派生的。當(dāng)數(shù)據(jù)改變時(shí),模型發(fā)出信號(hào)通知視圖。為了保證數(shù)據(jù)的存取和表示分離,InterView引入了模型索引的概念,每個(gè)數(shù)據(jù)條目通過(guò)模型索引來(lái)獲取,視圖和代理使用索引來(lái)存取數(shù)據(jù)。

如果要實(shí)現(xiàn)自定義的模型,可以從通用的QAbstractItemM odel類(lèi)繼承,也可以從類(lèi)QAbstractListModel與 QAbstractTableModel繼承實(shí)現(xiàn)列表模型或表格模型。實(shí)現(xiàn)自定義模型必須實(shí)現(xiàn)基類(lèi)的純虛函數(shù)和其它一些特定函數(shù)。當(dāng)實(shí)現(xiàn)一個(gè)模型時(shí),QAbstractItemModel本身不存儲(chǔ)任何數(shù)據(jù),它僅僅提供了視圖訪問(wèn)數(shù)據(jù)的接口。

另外,無(wú)論底層的數(shù)據(jù)結(jié)構(gòu)采取何種形式,通過(guò)在特定的模型中實(shí)現(xiàn)標(biāo)準(zhǔn)的QAbstractItem-M odel的函數(shù),達(dá)到以更自然的方式對(duì)底層的數(shù)據(jù)結(jié)構(gòu)進(jìn)行訪問(wèn),因此,用數(shù)據(jù)構(gòu)建模型更為容易,對(duì)于其它的模型/視圖組件也可以使用標(biāo)準(zhǔn)的接口與之進(jìn)行交互。

本例中,由于數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,所以沒(méi)有自定義模型,而是直接使用Qt提供的QSq l-RelationalTableM odel類(lèi)生成M odel模型,它和QAbstractItemM odel的繼承關(guān)系如圖3所示。

圖3 QSqlRelationalTableModel繼承關(guān)系圖

程序中主要代碼為:

以上程序代碼運(yùn)行的效果如圖4所示。

圖4 示例程序運(yùn)行效果

圖4中用圓角矩形標(biāo)注的2列中,網(wǎng)絡(luò)字形列為繪制的特殊形狀漢字,標(biāo)記列為繪制的位圖。

3 結(jié)束語(yǔ)

文中方法的實(shí)現(xiàn)程序在 Window s XP+ Qt4.5環(huán)境下調(diào)試通過(guò)。本文利用Q t的Inter-View框架,實(shí)現(xiàn)了在表格組件上繪制自定類(lèi)型數(shù)據(jù)的一種方法,該方法為在開(kāi)發(fā)復(fù)雜界面應(yīng)用程序中實(shí)現(xiàn)統(tǒng)一布局、建立一致性的交互接口提供了一種非常靈活、有效的途徑。目前,應(yīng)用該表格組件開(kāi)發(fā)的一套漢字錯(cuò)字字形庫(kù)系統(tǒng)以統(tǒng)一風(fēng)格顯示、編輯錯(cuò)字字形、位圖及標(biāo)注文本等信息,取得了較好的效果。

本文初稿首次刊登于《計(jì)算機(jī)技術(shù)與應(yīng)用進(jìn)展?2010》

[1] 梁彥民.漢字部件區(qū)別特征與對(duì)外漢字教學(xué)[J].語(yǔ)言教學(xué)與研究,2004,(4):76-80.

[2] 張問(wèn)銀,孫星明,曾振柄,等.漢字?jǐn)?shù)學(xué)表達(dá)式的自動(dòng)生成[J].計(jì)算機(jī)研究與發(fā)展,2004,41(5):848-852.

[3] 林 民,韓冬妹,宋 柔.基于GDI+路徑技術(shù)的漢字筆順和部件自動(dòng)繪制[J].計(jì)算機(jī)應(yīng)用研究,2007,24(8): 228-230.

[4] 林 民,宋 柔.一種面向構(gòu)形計(jì)算的漢字字形形式化描述方法[J].中文信息學(xué)報(bào),2008,22(3):115-123.

[5] Lee C,Helal S,Lee W.Universal interactions w ith smart spaces[J].IEEE Pervasive Computing,2006,5(1): 16-21.

[6] Apitz G,Guimb retière F,C ross Y.A crossing-based drawing application[C]//Proceedings of the 17th Annual ACM Symposium on User In terface Softw are and Technology,San ta Fe,NM,USA,October 24-27,2004:3-12.

[7] 王建平,陳正偉,欒慶磊,等.基于多群遺傳算法的漢字識(shí)別系統(tǒng)設(shè)計(jì) [J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(1):42-46.

[8] Hartness K.Graphics and user in terfaces in C++w ith Qt [J].Jou rnal of Compu ting Sciences in Colleges,2005,20(4):198-199.

[9] 蔡志明,盧傳富,李立夏.精通Qt 4編程[M].北京:電子工業(yè)出版社,2008:366-396.

[10] Nokia Corporation.Qt reference documentation[DB/OL]. [2010-03-20].http://qt.nokia.com/doc/4.6/index.h tm l.

猜你喜歡
錯(cuò)字視圖字形
易錯(cuò)字 來(lái)提醒
錯(cuò)字在身邊
甲骨文“黍”字形義考
甲骨文中的字形直立化二則
60秒找錯(cuò)字
60秒找錯(cuò)字
復(fù)習(xí)生字字形的方法
5.3 視圖與投影
視圖
Y—20重型運(yùn)輸機(jī)多視圖
台中县| 吉隆县| 宿松县| 新巴尔虎右旗| 平南县| 安阳县| 衢州市| 韩城市| 喜德县| 阜平县| 禹城市| 金秀| 南江县| 普兰县| 娱乐| 金坛市| 高邮市| 铜山县| 太保市| 台东县| 板桥市| 景洪市| 黄山市| 藁城市| 炎陵县| 银川市| 常宁市| 石家庄市| 安岳县| 如皋市| 汶上县| 滦平县| 平度市| 堆龙德庆县| 桐庐县| 桂平市| 泾阳县| 寻甸| 银川市| 加查县| 家居|