IM客戶端頭像設(shè)置和群組創(chuàng)建模塊設(shè)計_第1頁
IM客戶端頭像設(shè)置和群組創(chuàng)建模塊設(shè)計_第2頁
IM客戶端頭像設(shè)置和群組創(chuàng)建模塊設(shè)計_第3頁
IM客戶端頭像設(shè)置和群組創(chuàng)建模塊設(shè)計_第4頁
IM客戶端頭像設(shè)置和群組創(chuàng)建模塊設(shè)計_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 / 6 pic 窗體:1 主要功能:實現(xiàn)選擇圖片作為用戶自定義頭像圖片。2 具體設(shè)計:由 dialog 窗體點擊用戶頭像彈出,此窗體彈出對話框供用戶選擇本地png 圖片文件。3 流程圖:3.1 選擇文件流程圖:開始選中圖片是否確定結(jié)束修 改 用 戶 頭 像信息并寫入xml 文件結(jié)束是否2 / 6 3.2 文件選擇函數(shù)調(diào)用與實現(xiàn):主要涉及文件pic.h pic.cpp pic.ui 彈出 pic 窗體后,當點選打開文件的時候,彈出文件選擇對話框:設(shè)置私有變量qstring user_name; /用戶名bool isolduser; /用戶是否存在于xml 文件中qstring file_p

2、ath; /頭像文件路徑qstring file_name; /頭像文件名字槽函數(shù)void on_choose(qlistwidgetitem *); /選中文件時調(diào)用處理void on_pushbutton_ok_clicked(); /確定選擇時調(diào)用出去void on_pushbutton_open_clicked(); /點選打開文件按鈕是調(diào)用處理本模塊中一共涉及4個函數(shù):(1)void pic:on_pushbutton_open_clicked() (2)void pic:on_pushbutton_ok_clicked()(3)void pic:on_choose(qlistwid

3、getitem *item) (4)void pic:isxmlwrited() 函數(shù)的調(diào)用情況為:當點擊打開文件時調(diào)用(1) 。當點擊 pic 對話框中的確認時調(diào)用(2) 。當選擇頭像文件后點擊頭像文件選擇對話框中的確定按鈕時調(diào)用(3)或者當雙擊listwidget 中的頭像文件時發(fā)出信號,(3)作為槽函數(shù)調(diào)用。當點擊 pic 對話框中確認時,由(1)來調(diào)用( 4) 。3.2.1 void pic:on_pushbutton_open_clicked() 函數(shù)獲取用戶所選擇的文件路徑和文件名,并在 pic 窗體的 listwidget 區(qū)域顯示出所選擇的圖片:qfiledialog s; f

4、ile_path = s.getopenfilename /彈出對話框并獲取文件路徑和文件名(this, tr(選擇圖片 ), /home , 3 / 6 tr(images (*.png *.xpm *.jpg) ); file_name=file_path.mid( file_path.lastindexof(/)+1); 把獲取到的用戶選擇文件顯示在listwidget 控件里qlistwidgetitem * listitem = new qlistwidgetitem ( qicon(file_path), file_name, ui-listwidget, 0); ui-listw

5、idget-additem(listitem); ui-listwidget-setcurrentitem(listitem); 當用戶確認選擇時,將用戶選擇的信息寫入userhead.xml 文件中。3.2.2 void pic:on_pushbutton_ok_clicked() 本函數(shù)為用戶確認選擇函數(shù),通過本函數(shù)調(diào)用isxmlwrited() 來處理用戶選擇信息。isxmlwrited() 函數(shù)中首先對用戶userhead.xml 是否存在進行判定,若存在, 則查找是否存在此用戶信息, 存在則修改相應(yīng)的用戶頭像信息。不存在則添加該用戶頭像信息。若 xml 文件不存在,則創(chuàng)建并寫入該用戶

6、信息到xml 文件中。xml 結(jié)構(gòu)圖示:/root-username1/-headpath/-headpath_0/-headpath_1/-./-headname/-headname_0/-headname_1/-./-nowhead/-username2每個用戶對應(yīng)多套頭像本地路徑和圖像名,但是用戶所使用的當前頭像為nowhead 中的路徑值。qfile :exists(userhead.xml ) /判斷用戶頭像信息xml 文件是否存在true 表示存在。用戶頭像路徑本地確定修改后,需要上傳到服務(wù)器上,并更新其他用戶列表中的用戶頭像信息。 senduserhead();(未實現(xiàn),待實現(xiàn),

7、否則用戶僅能讀取到本地路徑的頭像修改)用戶頭像的更改也要同步到其他窗體同步修改用戶頭像。4 / 6 3.2.3 void pic:on_choose(qlistwidgetitem *item) 本軟件系統(tǒng)中默認用戶擁有以下兩套頭像,該頭像文件存放在debug 文件的 res 目錄下,當用戶選擇系統(tǒng)中默認頭像時,判斷 listwidget 中所選擇的為默認頭像時,修改當前的file_path和 file_name。if(item-text()= female.png ) file_name= female.png ; file_path= ./res/female.png; elseif (i

8、tem-text()= male.png ) file_name= male.png ; file_path= ./res/male.png ; 用戶頭像的顯示控件為一個flat 屬性為 true 的 pushbutton,設(shè)置 pushbutton 的 icon 為所選擇的 listwidget 的 item 的 icon 值即可顯示:此項設(shè)置在槽函數(shù)on_choose(qlistwidgetitem *); 中實現(xiàn)。ui-pushbutton_pic-seticon(item-icon(); 在 pic 的構(gòu)造函數(shù)中關(guān)聯(lián)兩個信號和槽函數(shù)connect(ui-listwidget, sign

9、al (doubleclicked( qmodelindex ),this,slot (on_pushbutton_ok_clicked(); connect(ui-listwidget, signal (itemclicked( qlistwidgetitem *), this,slot (on_choose(qlistwidgetitem *); creategroup 窗體:本窗體涉及到的文件有creategroup.h creategroup.cpp creategroup.ui 涉及到 3 個槽函數(shù):void on_pushbutton_back_clicked(); /點擊上一步按

10、鈕5 / 6 void on_pushbutton_clicked(); /點擊下一步按鈕void on_checkitem( qtreewidgetitem *,int); /選中 checkitem 時涉及到的控件:treewidget /顯示組織結(jié)構(gòu)listwidget /顯示選擇的內(nèi)容提供用戶選擇stackedwidget /多頁效果pushbutton /按鈕觸發(fā)事件lineedit /編輯群名textedit /編輯群公告在構(gòu)造函數(shù)中首先初始化樹形控件的信息:ui-treewidget-setcolumncount( 1); /設(shè)置列數(shù)ui-treewidget-setheader

11、label(tr( 選擇聯(lián)系人 ); /設(shè)置頭的標題把從服務(wù)器中獲取到的組織結(jié)構(gòu)圖顯示在樹形控件中。qtreewidgetitem *item1= new qtreewidgetitem (ui-treewidget, qstringlist (qstring (tr(財務(wù)部 ); qtreewidgetitem *item1_1= new qtreewidgetitem (item1,qstringlist (qstring(tr(king%1 ).arg(i); item1_1-setflags(item1_1-flags()| qt:itemisusercheckable); /tree

12、 checkboxitem1_1-setcheckstate(0,qt:unchecked); item1_1-seticon( 0,qicon(res/female.png); item1-addchild(item1_1); 連接樹形控件選擇項目信號好相應(yīng)的處理函數(shù)on_checkitem(qtreewidgetitem *,int); connect(ui-treewidget, signal (itemchanged(qtreewidgetitem *,int),this,slot(on_checkitem(qtreewidgetitem *,int); 本模塊涉及 3個函數(shù):(1)v

13、oid creategroup:on_pushbutton_clicked() (2)void creategroup:on_checkitem( qtreewidgetitem *s,int i) (3)void creategroup:on_pushbutton_back_clicked() 函數(shù)調(diào)用關(guān)系:點選按鈕下一步時調(diào)用(1) 。選擇 checkitem 項目時發(fā)出信號, (2)作為槽函數(shù)調(diào)用。點選按鈕上一步時調(diào)用(3) 。stackedwidget 控件分為兩頁, (1)函數(shù)把當前頁設(shè)置為1, (3)函數(shù)把當前頁設(shè)置為0 6 / 6 void creategroup:on_checkitem( qtreewidgetitem *s,int i) /如果當前選項被選中,則把當前選中項的內(nèi)容添加到listwidget 中if(s-checkstate(i)= qt:checked) ui-listwidget-additem(s-text(i); /如果當前項被去勾選,則在listwidget 中刪除當前項if(s-checkstate(i)= qt:unchecked) /ui-listwidget-finditems(s-text(i),) qlist list = ui-listwidget-finditems(s-text(i),qt:matc

溫馨提示

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

最新文檔

評論

0/150

提交評論