IM客戶端頭像設置和群組創建模塊詳細設計.doc_第1頁
IM客戶端頭像設置和群組創建模塊詳細設計.doc_第2頁
IM客戶端頭像設置和群組創建模塊詳細設計.doc_第3頁
IM客戶端頭像設置和群組創建模塊詳細設計.doc_第4頁
IM客戶端頭像設置和群組創建模塊詳細設計.doc_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

Pic窗體:1主要功能:實現選擇圖片作為用戶自定義頭像圖片。2具體設計:由Dialog窗體點擊用戶頭像彈出,此窗體彈出對話框供用戶選擇本地png圖片文件。3流程圖:3.1 選擇文件流程圖:開始選中圖片是否確定結束修改用戶頭像信息并寫入xml文件結束是否 3.2 文件選擇函數調用與實現:主要涉及文件pic.h pic.cpp pic.ui彈出pic窗體后,當點選打開文件的時候,彈出文件選擇對話框:設置私有變量 QString user_name; /用戶名 bool isOldUser; /用戶是否存在于xml文件中 QString file_path; /頭像文件路徑 QString file_name; /頭像文件名字槽函數 void on_choose(QListWidgetItem *); /選中文件時調用處理 void on_pushButton_ok_clicked(); /確定選擇時調用出去 void on_pushButton_open_clicked(); /點選打開文件按鈕是調用處理本模塊中一共涉及4個函數:(1)void Pic:on_pushButton_open_clicked()(2)void Pic:on_pushButton_ok_clicked()(3)void Pic:on_choose(QListWidgetItem *item)(4)void Pic:isXmlWrited() 函數的調用情況為: 當點擊打開文件時調用(1)。 當點擊pic對話框中的確認時調用(2)。 當選擇頭像文件后點擊頭像文件選擇對話框中的確定按鈕時調用(3)或者當雙擊listwidget中的頭像文件時發出信號,(3)作為槽函數調用。 當點擊pic對話框中確認時,由(1)來調用(4)。3.2.1 void Pic:on_pushButton_open_clicked()函數獲取用戶所選擇的文件路徑和文件名,并在pic窗體的listWidget 區域顯示出所選擇的圖片: QFileDialog s; file_path = s.getOpenFileName /彈出對話框并獲取文件路徑和文件名 (this, tr(選擇圖片), /home, 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-listWidget-addItem(listItem); ui-listWidget-setCurrentItem(listItem);當用戶確認選擇時,將用戶選擇的信息寫入userhead.xml 文件中。3.2.2 void Pic:on_pushButton_ok_clicked() 本函數為用戶確認選擇函數,通過本函數調用 isXmlWrited()來處理用戶選擇信息。isXmlWrited()函數中首先對用戶userhead.xml 是否存在進行判定,若存在,則查找是否存在此用戶信息,存在則修改相應的用戶頭像信息。不存在則添加該用戶頭像信息。若xml文件不存在,則創建并寫入該用戶信息到xml文件中。xml結構圖示: / root-username1 / -headpath / -headpath_0 / -headpath_1 / -. / -headname / -headname_0 / -headname_1 / -. / -nowhead / -username2每個用戶對應多套頭像本地路徑和圖像名,但是用戶所使用的當前頭像為nowhead中的路徑值。QFile:exists(userhead.xml) /判斷用戶頭像信息xml文件是否存在 true表示存在。用戶頭像路徑本地確定修改后,需要上傳到服務器上,并更新其他用戶列表中的用戶頭像信息。sendUserHead();(未實現,待實現,否則用戶僅能讀取到本地路徑的頭像修改)用戶頭像的更改也要同步到其他窗體同步修改用戶頭像。3.2.3 void Pic:on_choose(QListWidgetItem *item)本軟件系統中默認用戶擁有以下兩套頭像,該頭像文件存放在debug文件的res目錄下,當用戶選擇系統中默認頭像時,判斷listwidget 中所選擇的為默認頭像時,修改當前的file_path和file_name。 if(item-text()=Female.png) file_name=Female.png; file_path=./res/Female.png; else if(item-text()=Male.png) file_name=Male.png; file_path=./res/Male.png; 用戶頭像的顯示控件為一個flat屬性為true的pushbutton,設置pushbutton的icon為所選擇的listwidget的item的icon值即可顯示:此項設置在槽函數on_choose(QListWidgetItem *); 中實現。 ui-pushButton_pic-setIcon(item-icon();在pic的構造函數中關聯兩個信號和槽函數 connect(ui-listWidget,SIGNAL(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個槽函數: void on_pushButton_back_clicked(); /點擊上一步按鈕 void on_pushButton_clicked(); /點擊下一步按鈕 void on_checkItem(QTreeWidgetItem*,int); /選中checkItem時涉及到的控件: treeWidget /顯示組織結構 listWidget /顯示選擇的內容 提供用戶選擇 stackedWidget /多頁效果 Pushbutton /按鈕觸發事件 lineEdit /編輯群名 textEdit /編輯群公告在構造函數中首先初始化樹形控件的信息:ui-treeWidget-setColumnCount(1); /設置列數ui-treeWidget-setHeaderLabel(tr(選擇聯系人); /設置頭的標題把從服務器中獲取到的組織結構圖顯示在樹形控件中。QTreeWidgetItem *Item1= new QTreeWidgetItem(ui-treeWidget,QStringList(QString(tr(財務部);QTreeWidgetItem *Item1_1=new QTreeWidgetItem(Item1,QStringList(QString(tr(king%1).arg(i);Item1_1-setFlags(Item1_1-flags()|Qt:ItemIsUserCheckable); /tree checkboxItem1_1-setCheckState(0,Qt:Unchecked);Item1_1-setIcon(0,QIcon(res/Female.png);Item1-addChild(Item1_1); 連接樹形控件選擇項目信號好相應的處理函數on_checkItem(QTreeWidgetItem*,int);connect(ui-treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int),this,SLOT(on_checkItem(QTreeWidgetItem*,int);本模塊涉及3個函數:(1)void createGroup:on_pushButton_clicked()(2)void createGroup:on_checkItem(QTreeWidgetItem *s,int i)(3)void createGroup:on_pushButton_back_clicked()函數調用關系: 點選按鈕下一步時調用(1)。 選擇checkitem項目時發出信號,(2)作為槽函數調用。 點選按鈕上一步時調用(3)。stackedWidget控件分為兩頁,(1)函數把當前頁設置為1,(3)函數把當前頁設置為0void createGroup:on_checkItem(QTreeWidgetItem *s,int 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-listWidg

溫馨提示

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

評論

0/150

提交評論