当前位置: 首页 > news >正文

上下收缩、折叠面板

效果:

        上下收缩、折叠面板,类似QQ好友列表那种。原理就是在一个布局中,通过button来实现一个独立widget的visible/disable

实现:

        1.分组按钮        

#ifndef EXPANDPANEL_H
#define EXPANDPANEL_H#include <QWidget>class QLabel;
class ExpandPanel : public QWidget
{Q_OBJECT
public:ExpandPanel(QWidget* parent=nullptr);void setTitle(const QString& title);signals:void statuChanged(bool expand);protected:void mousePressEvent(QMouseEvent *event);private:QLabel* logo;QLabel* title;QLabel* icon;bool mExpand = true;
};#endif // EXPANDPANEL_H#include "expandpanel.h"
#include "parse/parsework.h"#include <QDebug>
#include <QLabel>
#include <QVariant>
#include <QHBoxLayout>
#include <QStyle>
ExpandPanel::ExpandPanel(QWidget *parent):QWidget(parent)
{            logo = new QLabel;logo->setObjectName("logo");title = new QLabel;title->setObjectName("title");icon = new QLabel;icon->setObjectName("icon");icon->setProperty("expand", true);QHBoxLayout* layout = new QHBoxLayout(this);layout->addWidget(logo);layout->addWidget(title);layout->addStretch(1);layout->addWidget(icon);layout->setContentsMargins(0,0,0,0);ParseWork::Instance().dynamicUpdateStyleSheet(this,":/qss/src/qss/expandpanel.qss");
}void ExpandPanel::setTitle(const QString &name)
{title->setText(name);
}void ExpandPanel::mousePressEvent(QMouseEvent *event)
{QWidget::mousePressEvent(event);mExpand = !mExpand;emit statuChanged(mExpand);icon->setProperty("expand", mExpand);ParseWork::Instance().dynamicUpdateStyleSheet(this,":/qss/src/qss/expandpanel.qss");
}

2.使用

在mainwindow中创建两部分,左边是折叠面板,右侧是一个qtabwidget(用不到则删掉)

void MainWindow::createFrame()
{mFuncPanel = new QWidget;    mFuncVLayout = new QVBoxLayout;mFuncPanel->setMinimumWidth(220);mFuncPanel->setLayout(mFuncVLayout);mFuncVLayout->setSpacing(15);mFuncVLayout->setContentsMargins(0,0,0,0);mLogPanel = new QTabWidget;mLogPanel->setTabsClosable(true);mLogPanel->setElideMode(Qt::ElideLeft);QSplitter* spliter = new QSplitter;spliter->setOrientation(Qt::Horizontal);spliter->addWidget(mFuncPanel);spliter->addWidget(mLogPanel);spliter->setStretchFactor(1, 1);spliter->setChildrenCollapsible(false);//very importance, not to hide child duruing movingQHBoxLayout* layout = new QHBoxLayout(this);layout->addWidget(spliter);
}void MainWindow::initLocalFilePanel()
{mLocalFilePl = new ExpandPanel;mLocalFilePl->setTitle(tr("LocalFile"));LocalFile* file = new LocalFile;mFuncVLayout->addWidget(mLocalFilePl);mFuncVLayout->addWidget(file);mFuncVLayout->addStretch(1);connect(mLocalFilePl, &ExpandPanel::statuChanged, file, &LocalFile::setVisible);
}

http://www.lryc.cn/news/334838.html

相关文章:

  • XC7A35T-2FGG484 嵌入式FPGA现场可编程门阵列 Xilinx
  • 淘宝订单API接口:电商业务自动化的新选择
  • 识典百科词条创建技巧,教你如何轻松创建热门识典百科词条!
  • iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)
  • 2024-04-08 问AI: 介绍一下AI 大神 吴恩达
  • Leetcode面试经典150_Q12整数转罗马数字
  • Docker-compose部署Alertmanager+Dingtalk+Prometheus+Grafana实现钉钉报警
  • 算法刷题记录 Day40
  • Android JNI基础
  • 裙边挡边带是什么
  • chabot项目介绍
  • ChromeOS 中自启动 Fcitx5 和托盘 stalonetray
  • 画图理解JVM相关内容
  • Scikit-Learn K均值聚类
  • 蓝桥杯 - 受伤的皇后
  • AcWing---乌龟棋---线性dp
  • python代码使用过程中使用快捷键注释时报错
  • go之web框架gin
  • SpringBoot 定时任务实践、定时任务按指定时间执行
  • MYSQL数据库故障排除与优化
  • 算法-数论-蓝桥杯
  • 222.完全二叉树节点个数
  • C++中的string类操作详解
  • Java绘图坐标体系
  • 【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,以及LS/LMMSE两种信道估计方法以及不同调制方式对比。
  • javaWeb车辆管理系统设计与实现
  • 【DM8】间隔分区
  • 0基础如何进入IT行业?
  • C#将Console写至文件,且文件固定最大长度
  • 《CSS 知识点》仅在文本有省略号时添加 tip 信息