基于Qt的类似QQ好友列表抽屉效果的实现

电脑杂谈  发布时间:2020-07-29 13:06:01  来源:网络整理

qt实现qq聊天窗口_qt 实现qq聊天_qt实现qq好友列表

前一段时间,我正忙于自己的毕业设计,所以我没有更新自己的博客. 经过今天的答辩,我的毕业设计项目将以模块的形式呈现,供刚开始学习Qt的人员参考.

毕业项目标题: Linux下基于Qt的LAN即时消息系统的设计与实现

我有一个类似于QQ的朋友列表,然后可以对我的朋友进行分组和管理. 全套中的详细效果图如下:

“

qt 实现qq聊天_qt实现qq好友列表_qt实现qq聊天窗口

找到设计思路:

1. 使用QToolBox方法,虽然看起来有点,但它不是我们熟悉的朋友列表,例如:

缺点: (1): 仅可以显示特定组中的朋友,并且不能同时显示多个组中的朋友列表.

(2): 必须显示特定组中的朋友,并非所有朋友都可以隐藏.

2. 使用QTreeView或QListView,个人感觉比较麻烦,所以我从未尝试过. 我之前找到了一个使用此方法的博客,但由于我的粗心,现在无法找到它.

.

qt实现qq好友列表_qt实现qq聊天窗口_qt 实现qq聊天

好的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聊天_qt实现qq好友列表_qt实现qq聊天窗口

第二天,我将上传一个简单的演示供您参考. 我也希望大家能批评和指导缺点qt实现qq好友列表,共同分享和交流. 互相学习.

================================================ ================================================== ==============================

因为昨天来不及了. 因此,该演示并未提供给所有人.

我今天很早起床,提取了这个模块,并编写了一个简单的演示供您参考.

演示中的效果图片:

qt 实现qq聊天_qt实现qq好友列表_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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 薛莹莹
        薛莹莹

        就在南海设几个反舰导弹阵地

      热点图片
      拼命载入中...