本文主要总结用Qt的自定义按钮和QWidget界面实现QQ好友列表的界面伸展和收缩功能,以及鼠标滑过、鼠标单击的QSS样式表效果。全文分为两大部分,分别是原理讲解和效果实现。
![](https://i-blog.csdnimg.cn/blog_migrate/0bf2aa0a2085919c2411e7b42309f8a9.gif)
源代码下载地址:https://download.csdn.net/download/naibozhuan3744/11860177
一、原理讲解
实现QQ好友列表伸缩或者抽屉效果,不是像QToolbox那样的效果,其实很简单。只需要用垂直布局将按钮和QWidget控件布局到一起,然后通过QWidget::setVisible(bool)实现QWidget界面的显示和隐藏就行。其中自定义按钮的原理讲解可以参考博主这篇博客:https://blog.csdn.net/naibozhuan3744/article/details/102536188
二、示例代码
2.1新建一个Widget工程,勾选UI界面,然后新建一个类QFriendListBtn,同时添加两个图片资源文件;
2.2分别向qqqfriendlistbtn.h、qqqfriendlistbtn.cpp、widget.h、widget.cpp、main.cp添加如下代码
qqqfriendlistbtn.h
#ifndef QQQFRIENDLISTBTN_H
#define QQQFRIENDLISTBTN_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QPixmap>
#include <QHBoxLayout>
class QFriendListBtn : public QPushButton
{
public:
explicit QFriendListBtn(QWidget *parent = nullptr);
void setImageLbl(const QPixmap &pixmap);
void setTextLb