我是靠谱客的博主 俭朴飞鸟,最近开发中收集的这篇文章主要介绍Qt制作QQ好友列表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


郁闷了好长时间,QQ列表怎么做呢,前一篇文章说想重写QTreeView,还要写个库,有点说大话了。其实一开始我就被骗了。因为当我看QQ列表的第一印象是用List,第2印象是用TreeView,第三我就悲剧了,想重新实现TreeView的函数。可能是可行的但是,不下一番功夫做不来,或者说是不可行的。TreeView 跟本做不了QQ列表!

最简单的方法是用QListView,或者 QListWidget,下面的简单代码是用QListWidget实现的。原来QQ列表很好做。

可能有疑问,QQ列表带収放的功能,QLisView没有啊,TreeView前面有个小箭头。QListView也没有。其实我们被骗了。小箭头也是ListView上的一个Item 只不过贴上图了而已。

因为只做示范,代码会有很多不规范的。但是大致思想是这样子的

 QListWidgetItem*item1=newQListWidgetItem;

QListWidgetItem*item2=newQListWidgetItem;

item1->setIcon(QIcon(QPixmap("好不好.jpg")));

item2->setIcon(QIcon(QPixmap("1000.jpg")));

item->setSizeHint(QSize(20,20));//这个函数超重要,因为他实现的功能让我找了一天。不然的没法设置item大小。重写函数也没法做到(我找不到 ^.^)

widget->setIconSize(QSize(40,40));  //widget    QListWidget

widget->addItem(item);   // item 是全局的 以为要他在槽中响应,改变图标,左三角和又三角

widget->addItem(item1);

widget->addItem(item2);

connect(widget,SIGNAL(clicked(QModelIndex)),this,SLOT(switchClicked(QModelIndex)));//文档里有

voidMainWindow::switchClicked(QModelIndexindex)

{

if(flag)item->setIcon(QIcon(QPixmap("he.jpg")));        //小箭头

elseitem->setIcon(QIcon(QPixmap("xia.jpg")));

if(index.row()==0){   //找到哪个item按下

qDebug()<<"0row";

widget->setRowHidden(1,flag);   // 这句话是思想的核心。没有他做不来収放的假象。也是我为什么一开始判断错误的原因

widget->setRowHidden(2,flag);   //有时候好的想法真的超过学好几天要学的知识。

flag=!flag;qDebug()<<flag;}  //flag    bool

}

基本上完成了 代码不全 主要是用到了setRowHidden和setSizeHint,setIconSize 重要函数,图标大小要用,item大小要用,item隐藏显示要用。其实知道这3个函数 其他的不重要了。

程序简单,开始是我想复杂了,被骗了好几天呢。 hide show 就能Tree的效果~!

例外 选择 QListWidget还有个好处就是  setItemWidget的函数,可以添加控件,比如你的一个Item上不能只写一行字吧,是不是有点单调啊。 这是可以把label加进去,用前文中字符串换行的例子 即可实现一个item 两行字, 需要注意的是这个函数要放在addItem后面写。

如果想写好点的QQ列表建议用QListView 需要 重写QItemDelegate。这就要靠自己的设计了,QItemDelegate不错哦,你想加什么控件都能加上。不过MVC的结构的掌握好。

最后

以上就是俭朴飞鸟为你收集整理的Qt制作QQ好友列表的全部内容,希望文章能够帮你解决Qt制作QQ好友列表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部