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

提交评论