亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux下GTK+自定義控件的設(shè)計(jì)和使用

        2015-08-04 06:07:53李國(guó)玲
        科技與創(chuàng)新 2015年15期
        關(guān)鍵詞:工具包

        李國(guó)玲

        摘 要:GTK+是一套跨多種平臺(tái)的圖形工具包,它提供了多種界面庫(kù)元素供用戶調(diào)用。但是,已有的界面庫(kù)元素僅能保證基礎(chǔ)的界面應(yīng)用程序開(kāi)發(fā),當(dāng)用戶需要特定功能的界面庫(kù)元素時(shí),自定義控件的設(shè)計(jì)和使用就顯得尤為重要。結(jié)合工作實(shí)踐,對(duì)GTK+自定義控件的設(shè)計(jì)和使用進(jìn)行了總結(jié),以期為對(duì)GTK+感興趣的愛(ài)好者們提供參考。

        關(guān)鍵詞:GTK+;界面庫(kù);自定義控件;工具包

        中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2015.15.115

        文章編號(hào):2095-6835(2015)15-0115-02

        2013年的凌鏡門事件把國(guó)家信息安全推到了風(fēng)口浪尖,隨著互聯(lián)網(wǎng)的飛速發(fā)展,全球信息化的不斷加速,信息安全也越來(lái)越受到人們的重視。國(guó)外軟硬件產(chǎn)品藏有后門的消息此起彼伏,國(guó)內(nèi)市場(chǎng)對(duì)于國(guó)產(chǎn)軟硬件的需求愈發(fā)強(qiáng)烈。僅僅支持Windows操作系統(tǒng)平臺(tái)的軟件產(chǎn)品已經(jīng)不能滿足市場(chǎng)需求,跨平臺(tái)的產(chǎn)品越來(lái)越受到人們的歡迎。GTK+是一套跨多種平臺(tái)的圖形工具包,能開(kāi)發(fā)出滿足跨平臺(tái)要求的界面應(yīng)用程序。GTK+工具包自帶的界面庫(kù)元素只能滿足最基本的應(yīng)用程序要求,要開(kāi)發(fā)出更高級(jí)的界面應(yīng)用程序,需要滿足特定功能要求的自定義界面庫(kù)控件。

        1 GTK+簡(jiǎn)介

        GTK(GIMP TookKit)是一套跨多種平臺(tái)的圖形工具包,是按照LGPL許可協(xié)議發(fā)布的。雖然最初是為GIMP而寫的,但時(shí)至今日早已發(fā)展為一個(gè)功能強(qiáng)大、設(shè)計(jì)靈活的通用圖形庫(kù),特別是被GNOME選中,使得GTK+被廣泛應(yīng)用,成為L(zhǎng)inux下開(kāi)發(fā)圖形界面應(yīng)用程序的主流開(kāi)發(fā)工具之一。GTK+是一套開(kāi)放源碼的自由軟件,這一點(diǎn)保證了它的信息安全性。

        2 GTK+自定義控件設(shè)計(jì)和使用

        當(dāng)已有的界面庫(kù)元素不能很好地滿足開(kāi)發(fā)者要求時(shí),需要考慮編寫自定義GTK+界面控件。

        首先,分析該自定義控件需要滿足的功能,定義頭文件和實(shí)現(xiàn)文件。以自定義面板TestPanel為例,假設(shè)存在一個(gè)自定義面板,其中包含兩個(gè)按鈕button1和button2。另外給TestPanel定義一個(gè)回調(diào)函數(shù)pressed,應(yīng)用程序綁定此回調(diào)函數(shù)。當(dāng)點(diǎn)擊button1或者button2時(shí),都觸發(fā)此回調(diào)函數(shù)。這就是TestPanel的功能定義。

        參考gtkbutton的源碼,我們應(yīng)該定義TestPanel.h、TestPanel.c、TestPanelPrivate.h這三個(gè)文件。由于TestPanelPrivate.h文件只包含一個(gè)控件信息結(jié)構(gòu)體,因此可考慮把TestPanelPrivate.h文件的內(nèi)容合并到TestPanel.h中。在TestPanel.h中就包含TestPanel、TestPanelClass、private_data這三個(gè)結(jié)構(gòu)體的定義,如圖1所示。

        TestPanel中的GtkVBox是該自定義控件的父控件,表示該自定義控件是基于工具包中的VBox之上的。Private_data參數(shù)就是結(jié)構(gòu)體private_data對(duì)象,此處用指針表示。對(duì)應(yīng)的TestPanelClass中包含一個(gè)GtkVBoxClass對(duì)象和pressed回調(diào)函數(shù)的聲明。

        然后從自定義控件的創(chuàng)建函數(shù)開(kāi)始逐步分析實(shí)現(xiàn)過(guò)程。在創(chuàng)建函數(shù)TestPanel_new中,調(diào)用GTK+的相關(guān)方法獲取自定義控件的類型信息,返回GtkType的對(duì)象。在獲取類型信息的同時(shí),調(diào)用了testPanel_class_init的初始化方法。根據(jù)這個(gè)GtkType對(duì)象,創(chuàng)建一個(gè)自定義控件的GtkWidget對(duì)象。接著初始化該自定義控件,包括在控件上添加兩個(gè)按鈕,并綁定按鈕的點(diǎn)擊事件。

        接下來(lái)要定義回調(diào)函數(shù)。在自定義控件的實(shí)現(xiàn)文件中定義一個(gè)靜態(tài)數(shù)組,為static guint testPanel??? signals[LAST SIGNAL]={0};,用來(lái)存儲(chǔ)所有的回調(diào)命令。然后在testPanel_class_init方法中初始化回調(diào)命令,如圖2所示,其中,object_class是把參數(shù)TestPanelClass*klass強(qiáng)轉(zhuǎn)成GtkObjectClass*。

        圖2 初始化回調(diào)命令程序

        接著定義在自定義控件內(nèi)部何時(shí)觸發(fā)此回調(diào)函數(shù),調(diào)用gtk_signal_emit函數(shù)即可觸發(fā)。在本例中,在button1和button2的clicked事件中觸發(fā)pressed回調(diào)函數(shù),程序?yàn)間tk_signal_emit(GTK_OBJECT(panel),testPanel_signals[PRESSED]);

        最后,實(shí)現(xiàn)完自定義控件后,應(yīng)用程序就像和使用基礎(chǔ)類庫(kù)的基本界面元素一樣使用自定義控件。如圖3所示,調(diào)用new方法來(lái)構(gòu)造對(duì)象,調(diào)用gtk_signal_connect方法綁定回調(diào)函數(shù),調(diào)用gtk_container_add把它添加到其他的GTK容器中。

        圖3 自定義控件使用程序

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

        GTK+是在Linux環(huán)境下一套非常實(shí)用的工具界面庫(kù)。同時(shí),它也是一套完全開(kāi)源的自由軟件,對(duì)源碼的研究有助于界面應(yīng)用程序的開(kāi)發(fā),也能幫助我們更好地理解GTK+的設(shè)計(jì)思想和實(shí)現(xiàn)方法。參考源碼實(shí)現(xiàn),開(kāi)發(fā)者們可以自定義一些適用于界面應(yīng)用程序的界面控件。在實(shí)現(xiàn)自定義控件的過(guò)程中,可以按照自己的設(shè)計(jì)思想來(lái)實(shí)現(xiàn),不需要照本宣科。當(dāng)然,這需要我們?cè)趯?shí)踐當(dāng)中不斷探索和學(xué)習(xí)。

        參考文獻(xiàn)

        [1]戰(zhàn)曉蘇.Gtk+程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.

        [2]博韋.深入理解LINUX內(nèi)核[M].陳莉群,馮銳,牛欣源,譯.北京:中國(guó)電力出版社,2008.

        〔編輯:王霞〕

        猜你喜歡
        工具包
        Epigallocatechin-3-gallate exerts antihypertensive effects and improves endothelial function in spontaneously hypertensive rats
        基于差異教學(xué)的數(shù)學(xué)課堂工具包開(kāi)發(fā)與思考
        荒野求生工具包
        小讀者(2020年23期)2021-01-09 03:09:36
        慢性病健康工具包研究進(jìn)展
        谷歌云與Digital Asset合作推出區(qū)塊鏈工具包
        運(yùn)用MATLAB軟件求解高中數(shù)學(xué)中的線性和非線性規(guī)劃問(wèn)題
        科技視界(2016年21期)2016-10-17 19:09:05
        職業(yè)安全衛(wèi)生防護(hù)“工具包”應(yīng)用
        建議為基層站點(diǎn)配備軟硬件“工具包”
        建議為基層站點(diǎn)配備軟硬件“工具包”
        Microchip推出PIC32藍(lán)牙入門工具包
        日本一级淫片免费啪啪| 最新亚洲精品国偷自产在线| 久久夜色撩人精品国产小说| 水蜜桃视频在线观看免费18| 极品尤物在线精品一区二区三区| 亚洲精品国产精品国自产| 久久人人爽人人爽人人av东京热 | 内射合集对白在线| 中文字幕亚洲乱码熟女一区二区| 人妻少妇人人丰满视频网站| 蜜桃在线高清视频免费观看网址 | 亚洲av大片在线免费观看| 无码人妻久久久一区二区三区| 女人扒开屁股爽桶30分钟| 久久精品免费无码区| 国产精品亚洲精品专区| 国产亚洲精品美女久久久久| 久久综合精品国产二区无码| 国产乱子伦精品免费女| a级三级三级三级在线视频| 亚洲无码在线播放| 日日噜噜噜夜夜爽爽狠狠| 无码一区二区三区在| 国产精品一区二区三区四区亚洲| 女人脱了内裤趴开腿让男躁| 国产99视频精品免费视频免里| 亚洲成人激情在线影院| 人妻少妇进入猛烈时中文字幕| 欧美极品少妇无套实战| 狠狠丁香激情久久综合| 女优av性天堂网男人天堂| 丰满的人妻hd高清日本| 日本一区二区不卡视频| 久久久国产视频久久久| 国产亚洲精品熟女国产成人| 东北老女人高潮疯狂过瘾对白| 日韩熟妇精品视频一区二区| 在线观看的a站免费完整版 | 国产美女露脸口爆吞精| A亚洲VA欧美VA国产综合| 最新中文字幕亚洲一区|