基于嵌入式系統的數字相框設計大學課程設計說明書_第1頁
基于嵌入式系統的數字相框設計大學課程設計說明書_第2頁
基于嵌入式系統的數字相框設計大學課程設計說明書_第3頁
基于嵌入式系統的數字相框設計大學課程設計說明書_第4頁
基于嵌入式系統的數字相框設計大學課程設計說明書_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、長 春 大 學課 程 設 計 說 明 書題目名稱 基于嵌入式系統的數字相框設計 院(系) 計算機科學技術學院 專業(yè)(班級) 軟件 10407 學生姓名 王雅楠(03) 劉陽(19) 廖泉亮(15) 李凱(25) 王志廷(28) 劉福強(29) 尹雙霞(02) 李鐵成(23) 指導教師 李 念 峰 起止日期 2013-6-24至2013-7-14 目錄目 錄錯誤!未定義書簽。一 設計目的錯誤!未定義書簽。二 設計內容錯誤!未定義書簽。三 設計要求錯誤!未定義書簽。四 設計過程錯誤!未定義書簽。1 設計原理錯誤!未定義書簽。2 程序結構分析錯誤!未定義書簽。3 功能實現錯誤!未定義書簽。五 系統測

2、試錯誤!未定義書簽。1 測試目的錯誤!未定義書簽。2 測試條件錯誤!未定義書簽。3 測試方法 錯誤!未定義書簽。六 設計心得錯誤!未定義書簽。參考文獻錯誤!未定義書簽。附錄錯誤!未定義書簽。一、設計題目 基于嵌入式系統的數字相框設計二、設計目的開設本課程設計的目的是,通過本課程設計,提高學生的分析問題、解決問題的能力,鞏固嵌入式系統的基本理論知識,進一步了解和掌握課程中所講授的概念,方法。同時通過本課程設計,全面綜合應用所學過的基礎知識,建立一個完整的嵌入式系統的開發(fā)過程的概念,并掌握其中的主要原理和方法,對已學過的嵌入式開發(fā)知識進行綜合運用。本課程設計的目的是通過開發(fā)一個消費類電子產品數字相

3、框,了解嵌入式產品開發(fā)的主要步驟,包括需求分析、系統結構設計、圖形界面設計、驅動程序、功能優(yōu)化、系統測試等,從而培養(yǎng)學生獨立完成比較復雜的實際系統設計的能力。三、設計任務作為一個消費類電子產品,數碼相框整個系統要完成的基本功能大致如下:1、用戶界面友好,操作簡便。由于該產品的使用者大多是非專業(yè)人士,用戶界面是否清晰明了、操作是否簡捷方便成為用戶是否能迅速接受此產品的重要因素。2、數字相框的功能應包括以下方面:(1)在lcd屏上全屏循環(huán)顯示多幅圖像文件;(2)人機交互界面設定各個模式的播放形式、輸入信息(2)支持觸摸屏換頁功能;(3)支持在瀏覽圖片的同時播放背景音樂 (4)支持jpeg格式的圖片

4、及wav格式的音樂 (5)支持圖片特效切換功能四、設計過程1、設計原理數字相框,也稱為數碼相框,其基本原理:外觀采用普通相框的造型,把原來相框中間的照片部分換成液晶顯示屏,配上電源,存儲介質等,可以直接播放數碼照片,使得一個相框內可以循環(huán)播放照片,比普通相框的單一功能更有優(yōu)勢。性能方面,由于數字圖像的解碼算法比較復雜,而且大量圖片需要從外部flash存儲器中讀取,所以對嵌入式微處理器的性能要求比較高。外部接口方面,該芯片最好能在外圍直接支持cf卡的compact flash接口,還應提供按鈕、lcd顯示屏、觸摸屏、聲音輸出通道等。在本課程設計中,采用了intel的pxa270作為微處理器,完全

5、能滿足上述硬件平臺的要求。數字相框軟件系統功能可以劃分為五個模塊:(1)圖片瀏覽模塊,可以通過按鍵控制選定某個圖像或更新圖像頁(上一頁、下一頁)。單擊按鈕時,主線程接收信號并傳遞給次線程,次線程根據信號給出相應的動作:顯示上一頁或下一頁的內容。每一頁中放置圖片。當到達最后一頁以后,不能立即返回到首頁,在首頁中,也不能立即到達最后一頁。(2)播放模塊,對瀏覽界面選定的圖片進行循環(huán)播放。按鈕區(qū)域創(chuàng)建進程運行預覽模塊,右擊退出返回到主菜單,退出時將進程殺死,釋放內存空間。(3)系統設置模塊,可設置循環(huán)播放更換頻率等。(4)音樂模塊,播放,關閉,音量大小。右擊并不退出音樂,只有單擊關閉按鈕才會關閉音樂

6、。2程序結構分析(1)整體結構設計:根據以上的功能要求,程序的模塊劃分和功能分析如下圖所示:開始開機界面主菜單圖片瀏覽擴展功能退出模塊音樂模塊主題更改顯示時間 圖1總體功能模塊圖(2) 圖片瀏覽模塊:主要有四個部分組成的,瀏覽上一張圖片,下一張圖片,擴放圖片,以及縮小圖片。此模塊的功能是圖片的顯示。在此模塊中建立顯卡與內存的映射,實現圖片顯示,在顯示的過程中還需要實現圖片的預覽,這就需要擁有圖片的縮放功能。為了加強圖片顯示的美感,在此模塊中,我們還設計了多種圖片顯示的特效。還要實現進程間的通信,獲取其他進程發(fā)送來的信號,并執(zhí)行相應操作。圖片瀏覽模塊擴放圖片縮小圖片下一張圖片上一張圖片 圖2圖片

7、瀏覽模塊(3)音樂模塊:在瀏覽優(yōu)美的圖片時,還可以聽到動聽的音樂。播放,暫停。這個模塊的主要功能就是在整個程序運行的過程中進行音樂的播放。此模塊對于我們來說比較陌生,具有一定的難度,不過我們會盡最大努力將它設計成功,讓數碼相框在圖片顯示的同時配上優(yōu)美的音樂。音樂模塊返回主界面播放列表右擊播放所選歌曲選擇下一首選擇上一首 圖3音樂播放流程圖3功能實現(1)開發(fā)工具的選擇:本課程設計采用嵌入式linux作為軟件開發(fā)平臺。在linux操作系統平臺上有多種嵌入式圖形界面開發(fā)工具可供使用,主要包括microwindows、munigui、tinyx和qt/embedded等幾種。本課程設計將集中討論在q

8、t/embedded系統上數字相框的實現技術。操作系統:ubuntu9.10 qt creator.qt/embeded界面介紹: 當前嵌入式linux在手機、pad等手持信息設備領域的應用十分廣泛。各種手持設備是否擁有圖形用戶辦(gui)已經成為其人機交互技術的關鍵體現,所以一個十分友好的圖形用戶界面(gui)是必不可少的。由于嵌入式系統硬件本身的多樣性,嵌入式gui應具備高度可移植性與可裁減性。(2)文件管理 共使用四個文件夾 image:用于存放所有要演示的圖片 freetype-2.3.11:用于存放處理文字所需的工具 jpeg-8:用于存放處理圖片所需的工具 src:用于存放我們編寫

9、的各種函數。如:特效函數,主函數,makefile函數等。(3)圖片顯示:設置圖片不透明:effect.cppeffect:effect() seteffecttype(opacity); setstartvalue(1.0); setendvalue(1.0); setduration(10); setdirection(qabstractanimation:forward); m_easingcurve=qeasingcurve:linear;設置圖片預覽的時間:int sequencemodel:duration()(4)wav音樂: soundengine.cppvoid slides

10、howengine:startsound() qsound bells(“g:/he.wav”);bells.play(); (5)圖片的特效播放:直接畫圖,int draw_jpeg0(fb_info fb_inf,u32_t *buf32, char *filename);百葉窗,int draw_jpeg4(fb_info fb_inf,u32_t *buf32, char *filename); 四周到中間,int draw_jpeg8(fb_info fb_inf,u32_t *buf32, char *filename);首先設置第一個圖片的enter effect 的屬性: ro

11、tation forward outinquad 開始坐標和結束坐標都為0。display effect 的屬性: scale forward outinquad start val的值為6。duration的值為3000。exit effect的屬性為:pos forward inoutquad 其中的所有坐標都為0;設置第二個圖片的enter effect 的屬性: rotation forward outinquad 開始坐標和結束坐標都為0,duration 為500。display effect 的屬性: rotation forward outinquad end val的值為36

12、0。duration的值為4000。exit effect的屬性為:pos forward inoutquad 其中的所有坐標都為0;設置第三張圖片的屬性值:pos forward outinquad .end point f 為600,600.end val 值為650 duration 值為3500。display effect 的值為:opacity forward outquad 值都為0.exit effect 屬性的值為:pos forward outquad 值為0.設置第四張圖片的屬性值:enter effect 屬性的值:pos forward linear duiation

13、的值為500.display effect的屬性值為:pos forward incubic end val的值為650.duiation的值為3700.exit effect的屬性值為:pos forward outquad 值都為0。(6)停止圖片的播放:void slideshowengine:stop() m_currentstate=stopped; endofslideshow();(7)設置圖片的屬性: duration圖片顯示的時間:int sequencemodel:duration() node itemnode; int totaltime=0; for(int i=0;

14、 irowcount();i+) itemnode=m_sequence.at(i); totaltime+=itemnode.entereffect().duration(); totaltime+=itemnode.displayeffect().duration(); totaltime+=itemnode.exiteffect().duration(); return totaltime;插入圖片:insertrowbool sequencemodel:insertrow (int row, const qmodelindex &parent) q_unused(parent); be

15、gininsertrows(qmodelindex(), row, row +1); node item; m_sequence.append(item); setmodified(true); endinsertrows(); return true; 圖片的保存:void sequencemodel:save(const qstring &filename) / queste sono operazioni lunghe. ci vuole una progress bar qfile file(filename); if(!file.open(qiodevice:writeonly) q

16、debug() tr(cannot open file for writing: ) qprintable(file.errorstring() endl; return;(8)u-boot的移植 建立工作目錄 下載源碼uboot的源碼:u-boot-2009.11.tar.bz2 #mkdir/root/build_uboot #cd/root/build_uboot把下載的源碼拷貝到該目錄,解壓:并把解壓后目錄更名為u-boot#tar jxvf u-boot-2009.11.tar.bz2#mv u-boot-2009.11 u-boot創(chuàng)建主代碼 復制board/samsung/smd

17、k2410 目錄為board/samsung/gec2440#cp arf board/samsung/smdk2410 board/samsung/gec2440并修改目錄下的makefile將cobjs:=smdk2410.o.flash.o 修改為cobjs:=gec2440.o.flash.o復制include/config/smdk2410.h為include/config/gec2440.h #cp include/config/smdk2410.h include/config/gec2440修改頂層makefile: 創(chuàng)建目標板信息,在smdk2410_config:uncon

18、fig$(mkconfig)$(:_config=)arm arm920tsmdk2410 samsung s3c24x0 后面添加gec2440_config:unconfig$(mkconfig)$(:_config=)arm arm920t gec2440 samsung s3c24x0 修改makefile規(guī)則,將_libs:=$(subst$(obj),$(libs)$(subst$(obj),$(libboard)改為:_libs:=$(subst$(obj),$(libboard)$(subst$(obj),$(libs)進入目錄配置編譯配置#make gec2440_confi

19、g#make編譯結果生成u-boot.bin燒入開發(fā)板關于觸摸板驅動移植 添加代碼:將touchscreen驅動源碼gec2440_ts.c(復制drivers/input/touchscreen目錄下的s3c2410_ts.c)添加到linux-2.6.30源碼目錄drivers/input/touchscreen中。將adc驅動源碼gec2410_adc.c(復制drivers/char目錄下的adc.c)及頭文件s3c24xx-adc.h添加到linux-2.6.30源碼目錄drivers/char中。修改drivers/input/touchscreen/makefile文件。#vim

20、 drivers/input/touchscreen/makefileobj-$(config_touchscreen_gec2440) +=gec2440_ts.修改drivers/input/touchscreen/kconfig文件#vim drivers/input/touchscreen/kconfig添加config touchscreen_gec2440 tristate”gec2440 touchscreen input driver” help say y here if you have the s3c2440 touchscreen.修改drivers/char/make

21、file文件#vim drivers/char/makefile添加obj-$(config_gec2440_adc)+=gec2440_adc.o修改drivers/char/kconfig文件#vi driver/char/kconfig添加config gec2440_adc tristate”gec2440_adc” -help-say y here if you have the s3c2440 adc.修改arch/arm/plat-s3c/include/plat/devs.h文件#vim arch/arm/plat-s3c/include/plat/devs.添加:struct

22、 s3c2410_ts_mach_info int delay; 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#vim arch/arm/mach-s3c2410/mach-smdk2410.c添加static struct s3c2410_ts_mach_info gec2410_ts_cfg_initdata= .delay = 10000, .presc = 49, .oversampling_shift=2,;在 static void_init smdk2410_map_io(void)函數中添加:s3c24xx_init_ touchscree

23、n(&gec2410_ts_cfg);修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#vim arch/arm/mach-s3c2410/mach-smdk2410.c在 static struct platform_device*smdk2440_devices_initdata結構體中添加:&s3c_device_ts,編譯配置內核 #make menuconfig配置菜單添加驅動到內核:device drivers- input device support- * touchscreens- gec2440 touchscreen input driv

24、er character devices - gec2440_adc編譯內核生成靜態(tài)驅動模塊#make修改arch/arm/plat-s3c/include/plat/devs.h文件#vim arch/arm/plat-s3c/include/plat/devs.h添加:struct s3c2410_ts_mach_info int delay; int presc; int oversampling_shift;void_init 3c24xx_init_touchscreen(struct s3c2410_ts_mach_info*hard_s3c2410_ts_info);extern

25、 struct platform_device s3c_device_ts;修改arch/arm/plat-s3c24xx/ devs.c文件#vim arch/arm/plat-s3c24xx/ devs.c在文件后面添加/*touchscreen*/static struct s3c2410_ts_mach_info s3c2410_ts _info;void_init s3c24xx_init_touchscreen(struct s3c2410_ts_mach_info*hard_s3c2410_ts_info);memcpy($s3c2410_ts_info, hard_s3c241

26、0_ts_info,sizeof(struct s3c2410_ts_mach_info);export_symbol(s3c24xx_init_touchscreen);struct platform_device s3c_device_ts= .name=” s3c2410_ts”, .id=-1, .num_resources=array_size(s3c_adc_ resource), . resource = s3c_adc_ resource,.dev= .platform_data=$s3c2410_ts_info,export_symbol(s3c_device_ts);在根文

27、件系統中建立相關設備節(jié)點:#mkdir /dev/input#mknod/dev/input event0 c 13 64 #mknod /dev/input/mouse0 c 13 32提示“read-only file system”,或者”mkdir:cannot create directory /dev/input:file exists”.解決方法如下: #chmod 777/dev/ #mount o remount rw/基于qt3平臺的應用程序(9)驅動的移植 關于usb驅動移植 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#includ

28、e#include#include#includestatic struct s3c2410_hcd_info usb_gec2410_info= .port0= .flags=s3c2410_hcdflg_used,;int usb_gec2410_init(void) unsigned long upllvalue=(0x7812)|0xo24)|(0x03);prink(“usb control,(c)gec2410n”);s3c_device_usb.dev.platform_data=&usb_gec2410_info;while(upllvalue!=_raw_readl(s3c2

29、410_upllcon) _raw_write(upllvalue,s3c2410_upllcon); mdelay(1);return 0;在static void_init smdk2410_map_io()函數中添加usb_sbc2410_init()函數usb_getc2410_init();內核配置 支持熱插拔 general setup- *configure standard kernel features(for small systems)- support for hot-pluggable devices讓內核支持usb設備device drivers block dev

30、ices - low performance usb block driver scsi device support- scsi generic support probe all luns on each scsi device usb support- support for host-side usb *usb device filesystem usb mass storage support usb monitor加入 msdos文件系統和vfat文件系統支持(為適應掛載u盤)file systems- dos/fat/nt filesystems- msdos fs suppor

31、t vfat (windows-95) fs support (936) default codepage for fat (cp936) default iocharset for fat使能(dos分區(qū)) config_msdos_partitionfile systems-partition types- *pc bios (msdos partition tables) support添加對中文字體庫的支持file systems-*- native language support- simplified chinese charset(cp936,gb2312) nls utf8

32、編譯 #make五、系統測試1測試目的軟件測試是軟件開發(fā)的最后一個階段,測試的目的不是證明所開發(fā)的軟件沒有錯誤,而是盡可能的多發(fā)現軟件設計開發(fā)全周期中各個階段的錯誤, 以便分析錯誤的性質與位置而加以糾正,糾正過程涉及到更正或重新設計相關的文檔活動。從而避免用戶在使用時出現不可預測的異常而導致整個系統崩潰。2、測試條件(1)系統條件linux操作系統(2)人員選擇單元測試: 每個模塊的設計人員系統測試: 設計小組的全體成員驗收測試:測試:在我們設計小組成員的指導下,進行測試測試:完全由不是本小組的人員進行測試3、測試方法采用黑盒測試和白盒測試兼并的測試方法,每當完成一項事件的處理時,便執(zhí)行程序,

33、進行測試,每完成一個模塊的代碼,也進行相關的測試,最后,全部代碼完成時,進行全面的測試。4測試過程(1)文件路徑加載問題: qpixmap pixmap;/全局變量 qfileinfolist list;/全局變量 qstring dir=”/home/akaedu/”;qdir picdir(dir);qstringlist filters;filters”*.jpeg”;picdir.setnamefilters(filters);list=picdir.entryinfolist();qfileinfo fileinfolist.at(i);qstring path=fileinfo.f

34、ilepath();pixmap.load(path);問題:當圖片顯示最后一張圖片繼續(xù)點下一張圖片按扭的時候,圖片路徑是正確的,但窗口不正確。分析原因:因為qpixmap pixmap 為全局變量,在圖片瀏覽功能時pixmap.load(path)將所有的圖片都加載進去,雖然指針i qfileinfo fileinfo=list.at(i) 控制圖片的路徑,用qdebug打印路徑是正確的,但qpixmap pixmap一直取的是所有圖片中的最后一張圖片的。解決的方案是:將qpixmap pixmap設置為局部變量,位置位于void renderarea:paintevent(qpaintev

35、ent *)畫圖函數的作用域。void renderarea:paintevent(qpaintevent *) qpainter painter(this); qfileinfo fileinfo =list.at(i); qstring path=fileinfo.filepath(); qpixmap pixmap;pixmap.load(path);(2)循環(huán)控制播放的問題:當圖片循環(huán)時指針i一直處于遞加的,但圖片的顯示是循環(huán)結束圖片第一個到最后一張。qpixmap pixmap是通過觸發(fā)調用void renderarea:paintevent(qpaintevent *)來將圖片顯示

36、的,其中有2個函數方法可以:一個是update()、另一個是repaint();我們用的是前者。分析原因:update()函數在循環(huán)控制的時候不管次數的多少,只在最后一次調用paintevent顯示最后一張。解決方案:在循環(huán)控制的時候repaint()有多少次調用多少次,所以用repaint()代替update()(3) 運行程序時,總會出現qmake的錯誤,后來發(fā)現是因為保存的路徑中有中文的原因。將路徑改為g:/images之后可成功啟動。(4)在添加歌曲時,開始時我們添加的是mp3格式的音樂,可是始終聽不到音樂:將音樂格式改為wav格式的音樂,就可以正常播放了。 (5)對添加進來的圖片進行

37、特效制作:opacity:設置圖片不透明 forward:設置圖片向后轉 rotation:設置圖片循環(huán)旋轉六、設計心得本次課程設計,在qt的環(huán)境下編寫程序,然后把程序向試驗箱進行移植,比起以往的單一編程,還是有些難度的。設計中我們遇到很多的難題,很多東西都是第一次接觸,很多用到的技術網上根本沒有資料,完全憑借自己去摸索嘗試。其中的困難可想而知。實現模塊中是問題最多的,文件解析,文件讀取,特效制作等等。還有許多的細節(jié)問題,如內存釋放、軟硬編碼、信號傳輸、環(huán)境變量。 通過這次數碼相框的設計,讓我們了解了這是一個團隊的工作,團隊需要個人,個人也離不開團隊,必須發(fā)揚團結協作的精神。每一個人都必須緊密

38、的融入到團隊之中,這樣才能讓這個團隊更高效。設計過程中只有一個人知道原理是遠遠不夠的,必須讓每個人都知道,否則一個人的錯誤,就有可能導致整個工作的失敗。團結協作是我們設計成功的一項非常重要的保證。而這次設計也正好鍛煉我們這一點,這是非常寶貴的經驗。此次項目設計,鞏固了以往學過的知識點,得到了很多新的項目設計的寶貴經驗,比如獨立思考解決問題,出現差錯的隨機應變,與他人的協作等等。這都讓我們受益匪淺,會讓我們今后的項目設計更加輕松,讓我們能夠更加優(yōu)秀的完成今后的項目設計工作。在設計的過程中,我們才發(fā)現知識僅僅“學過”是不夠的,還要會用。這樣那些知識才能真正的算作你自己的知識,也就是理論與實際相結合

39、。只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才是真正的學以致用,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到的問題也很多,有一些也讓我們大傷腦筋,這畢竟是第一次以一個團隊的形式來完成一個項目的設計,難免會遇到各種各樣的問題,同時在設計的過程中發(fā)現了我們本身的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。在此,感謝老師的細心指導,感謝其他各組同學的無私幫助,并且再次對我們小組所有組員在項目設計過程中所付出的辛勞與努力表示感謝。參考文獻1、石秀民,魏洪興主編。嵌入式系統原理與應用基于xscale與linux.北京航空天大學出版

40、社,2007.2、陳虎,吳濤等著。嵌入式系統課程設計。機械工業(yè)出版社,20083、北京博創(chuàng)興業(yè)科技有限公司。up-techpxa270-s_linux實驗指導m.20074.王天苗,嵌入式系統設計與實例開發(fā)m. 北京:清華大學出版社,2010附錄1、 main.cpp#include #include mainwindow.hint main(int argc, char *argv) qapplication a(argc, argv); mainwindow w; /a.setstyle(plastique); w.show(); return a.exec();2、soundengine

41、.cpp#include slideshowengine.hvoid slideshowengine:startsound()qstring command; command=/usr/bin/mplayer -slave ; for(int i=0; isoundtracks().count();i+) command.append(m_sequence-soundtracks().at(i); command.append( ); qdebug() setupui(this);dialog:dialog()delete ui;4 delegate.cpp#include #include

42、node.h#include delegate.h delegate:delegate(qwidget *parent) : qstyleditemdelegate(parent) void delegate:paint(qpainter *painter, const qstyleoptionviewitem &option, const qmodelindex &index) const node item; if (qvariantcanconvert(index.data(qt:decorationrole) qvariant val=index.data(qt:userrole);

43、item=val.value(); qpixmap pix=item.nodeicon(); int offsetv = 0; if (option.state & qstyle:state_selected) painter-fillrect(option.rect, option.palette.highlight(); /painter-setpen(qt:blue); /painter-drawrect(option.rect); painter-drawpixmap(option.rect.x(),offsetv+option.rect.y(),pix.width(),pix.hei

44、ght(),pix); /painter-drawrect(option.rect.x()+pix.width()*5/4,option.rect.y()+pix.height()/4,pix.width()/2,pix.height()/2); /*qstring enterstr=item.entereffect().effecttype(); qstring displaystr=item.displayeffect().effecttype(); qstring exitstr=item.exiteffect().effecttype(); painter-drawtext(optio

45、n.rect.x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4,enterstr); painter-drawtext(option.rect.x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4+20,displaystr); painter-drawtext(option.rect.x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4+40,exitstr);*/ else qstyleditem

46、delegate:paint(painter, option, index); qsize delegate:sizehint(const qstyleoptionviewitem &option, const qmodelindex &index) const if (qvariantcanconvert(index.data(qt:decorationrole) qvariant val=index.data(qt:decorationrole); qpixmap pix=val.value(); return qsize(pix.width()*3/2,pix.height(); els

47、e return qstyleditemdelegate:sizehint(option, index);qwidget *delegate:createeditor(qwidget *parent, const qstyleoptionviewitem &option, const qmodelindex &index) const return qstyleditemdelegate:createeditor(parent, option, index);void delegate:seteditordata(qwidget *editor, const qmodelindex &index) const qstyleditemdelegate:seteditordata(editor, index);void delegate:setmodeldata(qwidget *editor, qabstractitemmodel *model, const qmodelindex &index) const qstyleditemdelegate:setmodeldata(editor, model, index);void delegate:commitandcloseeditor() qwidget *editor = qobject

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論