700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android制作好友列表 Qt制作QQ好友列表

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

时间:2024-04-22 06:11:55

相关推荐

android制作好友列表 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()<

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的结构的掌握好。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。