
前一段时间,我正忙于自己的毕业设计,所以我没有更新自己的博客. 经过今天的答辩,我的毕业设计项目将以模块的形式呈现,供刚开始学习Qt的人员参考.
毕业项目标题: Linux下基于Qt的LAN即时消息系统的设计与实现
我有一个类似于QQ的朋友列表,然后可以对我的朋友进行分组和管理. 全套中的详细效果图如下:

找到设计思路:
1. 使用QToolBox方法,虽然看起来有点,但它不是我们熟悉的朋友列表,例如:
缺点: (1): 仅可以显示特定组中的朋友,并且不能同时显示多个组中的朋友列表.
(2): 必须显示特定组中的朋友,并非所有朋友都可以隐藏.
2. 使用QTreeView或QListView,个人感觉比较麻烦,所以我从未尝试过. 我之前找到了一个使用此方法的博客,但由于我的粗心,现在无法找到它.
.

好的qt实现qq好友列表,在介绍了其他人之后,下一步就是您自己的事情了.
我的方法实际上非常简单. 它使用QLayout布局和QWidget的setVisible()函数来控制显示.
#include <QVBoxLayout>
#include <QLabel>
class IMToolItem : public QWidget {
Q_OBJECT
public:
IMToolItem(const QString &title,
QWidget *parent = 0) : QWidget(parent), layout(new QVBoxLayout)
{
layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(new QLabel(title));
setLayout(layout);
layout->setContentsMargins(0,0,0,0);
layout->setSpacing(0);
}
void addItem(QWidget *item)
{
m_itemList.append(item);
layout->addWidget(item);
item->setVisible(false);
}
protected:
void mousePressEvent(QMouseEvent *event)
{
for (int i=0; i<m_itemList.size(); ++i)
{
m_itemList[i]->setVisible(!m_itemList[i]->isVisible());
}
}
private:
QList<QWidget *> m_itemList;
QVBoxLayout *layout;
};
class IMToolBox : public QWidget {
Q_OBJECT
public:
IMToolBox(QWidget *parent = 0) : QWidget(parent), layout(new QVBoxLayout)
{
setLayout(layout);
layout->setContentsMargins(0,0,0,0);
layout->setSpacing(0);
}
void addItem(IMToolItem *item)
{
layout->addWidget(item);
}
private:
QVBoxLayout *layout;
};
此代码不仅可以实现QQ好友列表的抽屉效果,而且还支持许多其他扩展.
但是为了向读者提供一个想法,读者可以自由地扩展和封装到自己的类中以供自己使用.
假定仅显示抽屉效果. IMToolItem类完全足够.

第二天,我将上传一个简单的演示供您参考. 我也希望大家能批评和指导缺点qt实现qq好友列表,共同分享和交流. 互相学习.
================================================ ================================================== ==============================
因为昨天来不及了. 因此,该演示并未提供给所有人.
我今天很早起床,提取了这个模块,并编写了一个简单的演示供您参考.
演示中的效果图片:
%0A
水印/ 2 / text / aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2h1aWRleWlkaQ == / font / 5a6L5L2T / fontsize / 400 / fill / I0JBQkFCMA == / dissolve / 70 / gravity / Center'alt =“ />
简介:
单击组标题以显示或隐藏整个组中的朋友;
朋友太多时. 在显示范围内操作,滚动条将出现在右侧.
要说的另一件事是,我认为控制QList m_itemList循环遍历的显示和隐藏不是很合理.
您可以直接将显示组的标签标签放在IMToolBox中,将好友按钮放在IMToolItem中,然后直接控制IMToolItem的显示或隐藏. 应该有可能.
下载链接:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-288957-1.html
就在南海设几个反舰导弹阵地