android制作好友列表,Qt制作QQ好友列表

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

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

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

65b8ecfdbcb90a73300c0e32b05756cc.png

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

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()<

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

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

flag=!flag;qDebug()<

}

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值