《QT实用小工具·十四》面板容器控件和图形字体示例

1、概述
源码放在文章末尾

面板容器控件包含如下功能:

    1. 支持所有widget子类对象,自动产生滚动条。
    1. 支持自动拉伸自动填充。
    1. 提供接口获取容器内的所有对象的指针。
    1. 可设置是否自动拉伸宽度高度。
    1. 可设置设备面板之间的间距和边距。

超级图形字体类包含如下功能:

    1. 可传入多种图形字体文件,一个类通用所有图形字体。
    1. 默认已经内置了阿里巴巴图形字体FontAliBaBa、国际知名图形字体FontAwesome、天气图形字体FontWeather。
    1. 可设置 QLabel、QAbstractButton 文本为图形字体。
    1. 可设置图形字体作为 QAbstractButton 按钮图标。
    1. 内置万能的方法 getPixmap 将图形字体值转换为图片。
    1. 无论是设置文本、图标、图片等都可以设置图标的大小、尺寸、颜色等参数。
    1. 内置超级导航栏样式设置,将图形字体作为图标设置到按钮。
    1. 支持各种颜色设置比如正常颜色、悬停颜色、按下颜色、选中颜色。
    1. 可设置导航的位置为 left、right、top、bottom 四种。
    1. 可设置导航加深边框颜色和粗细大小。
    1. 导航面板的各种切换效果比如鼠标悬停、按下、选中等都自动处理掉样式设置。
    1. 全局静态方法,接口丰富,使用极其简单方便。

在这里插入图片描述

项目部分代码如下:

#ifndef PANELWIDGET_H
#define PANELWIDGET_H

/**
 * 面板容器控件
 * 1. 支持所有widget子类对象,自动产生滚动条。
 * 2. 支持自动拉伸自动填充。
 * 3. 提供接口获取容器内的所有对象的指针。
 * 4. 可设置是否自动拉伸宽度高度。
 * 5. 可设置设备面板之间的间距和边距。
 */

#include <QWidget>

class QScrollArea;
class QFrame;
class QVBoxLayout;
class QGridLayout;
class QSpacerItem;

#ifdef quc
class Q_DECL_EXPORT PanelWidget : public QWidget
#else
class PanelWidget : public QWidget
#endif

{
    Q_OBJECT

    Q_PROPERTY(int margin READ getMargin WRITE setMargin)
    Q_PROPERTY(int space READ getSpace WRITE setSpace)
    Q_PROPERTY(bool autoWidth READ getAutoWidth WRITE setAutoWidth)
    Q_PROPERTY(bool autoHeight READ getAutoHeight WRITE setAutoHeight)
    Q_PROPERTY(int columnCount READ getColumnCount WRITE setColumnCount)

public:
    explicit PanelWidget(QWidget *parent = 0);

protected:
    void resizeEvent(QResizeEvent *);

private:
    QScrollArea *scrollArea;    //滚动区域
    QWidget *scrollAreaContents;//滚动区域载体
    QFrame *frame;              //放置设备的框架,自动变宽变高
    QVBoxLayout *verticalLayout;//设备面板总布局
    QGridLayout *gridLayout;    //设备表格布局
    QSpacerItem *hSpacer;       //横向弹簧
    QSpacerItem *vSpacer;       //垂直弹簧

    int margin;                 //边距
    int space;                  //设备之间的间隔
    bool autoWidth;             //宽度自动拉伸
    bool autoHeight;            //高度自动拉伸

    int columnCount;            //面板列数
    QList<QWidget *> widgets;   //设备面板对象集合

public:
    //默认尺寸和最小尺寸
    QSize sizeHint() const;
    QSize minimumSizeHint() const;

    //设置边距
    void setMargin(int left, int top, int right, int bottom);

    //获取和设置边距
    int getMargin() const;
    void setMargin(int margin);

    //获取和设置间距
    int getSpace() const;
    void setSpace(int space);

    //获取和设置自动填充宽度
    bool getAutoWidth() const;
    void setAutoWidth(bool autoWidth);

    //获取和设置自自动填充高度
    bool getAutoHeight() const;
    void setAutoHeight(bool autoHeight);

    //获取和设置列数
    int getColumnCount() const;
    void setColumnCount(int columnCount);

    //获取和设置窗体集合
    QList<QWidget *> getWidgets() const;
    void setWidgets(QList<QWidget *> widgets);

    //载入窗体集合
    void loadWidgets();
    //指定位置插入新窗体
    void insertWidget(int index, QWidget *widget);
    //移除指定的窗体
    void removeWidget(QWidget *widget);
    //清空窗体
    void clearWidgets();
};

#endif // PANELWIDGET_H

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/519082.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金陵科技学院软件工程学院软件工程专业

感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦…

【美团笔试题汇总】2023-08-26-美团春秋招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新小米近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

在线除背景抠图工具推荐,通过AI自动去除人物背景,给图片背景换色

发现了一个好的在线除水印的网站&#xff0c;这里由「易极赞」的小编来分享给大家。它就是我们今天的主角SnapEdit。 工具简介 SnapEdit 借助至极先进的人工智能技术&#xff0c;得以自动判别图像的主体与背景&#xff0c;飞速地移除背景且保留主体的细微之处和边缘轮廓&…

十六.PyEcharts常用视图(2)

目录 一.饼图 二.空心饼图(掏空) 三.玫瑰图 四.修改图例位置--全局 五.雷达图 六.时间轴 简单写一下,快速出图... 一.饼图 #饼图 import pyecharts.options as opts from pyecharts.faker import Faker from pyecharts.charts import Pie #zip() data_pie list(zip(Fa…

Floyd之蓝桥公园

Floyd Floyd算法是一种用于解决“所有点最短路径”问题的算法。这是一个动态规划算法&#xff0c;可以在任何包含向量和非负权重的图中使用。它的时间复杂度是&#xff0c;其中是图中的节点数。 首先&#xff0c;我们定义一个二维数组表示从到的最短距离&#xff0c;初始时如…

软著说明文档生成/辅助填写工具

软著说明文档生成/辅助填写工具&#xff0c;自行申请软著的话&#xff0c;软著60页源码还比较容易搞定&#xff0c;但是说明文档有格式和字数要求&#xff0c;就很烦。这个网站可以进行格式和内容的辅助填写&#xff0c;不用再把精力浪费到没用的调整格式上&#xff0c;网站地址…

揭秘SCQL:隐私计算的未来之路

1.SCQL使用/集成最佳实践 隐语隐私计算中SCQL&#xff08;Secure Collaborative Query Language&#xff09;的设计旨在提供一种便捷且安全的方式来处理多方参与下的隐私敏感数据查询与分析&#xff0c;而无需暴露原始数据给任何一方。以下是基于以上所记录信息的SCQL使用和集…

Jackson @JsonUnwrapped注解扁平化 序列化反序列化数据

参考资料 Jackson 2.x 系列【7】注解大全篇三JsonUnwrapped 以扁平的数据结构序列化/反序列化属性Jackson扁平化处理对象 目录 一. 前期准备1.1 前端1.2 实体类1.3 Controller层 二. 扁平化序列反序列化数据2.1 序列化数据2.2 反序列化数据 三. 前缀后缀处理属性同名四. Map数…

Pillow教程10:设计博文的文字背景封面图,再也不担心找不到不素材了

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

C#中ref和out相关知识点

知识点一&#xff1a; 知识点二&#xff1a; 知识点三&#xff1a; 测试&#xff1a; 总结&#xff1a; 练习

逐步学习Go-WaitGroup【连字都懒得写了,直接Show my Code】

package waitgroup_testimport ("fmt""runtime""sync""testing""time""github.com/stretchr/testify/assert" )// 这是对Go语标准库中sync包下的WaitGroup的描述。// WaitGroup用于等待一组并发的goroutine结结束…

理解VAE,可视化

引言 本文主要摘抄自&#xff1a;Understanding Variational Autoencoders (VAEs), Joseph Rocca, Sep 24, 2019&#xff0c;同时会加一些自己的理解和对原文的解释。 关于数据生成&#xff0c;目前深度生成模型中主流的有&#xff1a; 生成对抗网络——GANs&#xff0c;这是…

【Python的第三方库】flask

1. Flask是什么&#xff1f; 基于python的web后端开发轻量级框架&#xff1b; 基于MVT设计模式即Models,Views,Templates(html模板语言) 2.中文文档&#xff1a; https://dormousehole.readthedocs.io/en/2.1.2/index.html 3.依赖3个库&#xff1a; Jinja2 模版&#xff1…

armlinux-外部中断

s3c2440的中断框图 如果我们单纯配置一个按键的外部中断&#xff0c;就不存在子中断与优先级的问题。 由于是按键的外部中断&#xff0c;通过引脚的高低电平来触发。所以我们要先配置引脚的功能。 我们使用按键1&#xff0c;终端源为EINT8&#xff0c;对应引脚GPG0 通过用户手…

物联网实战--入门篇之(八)嵌入式-空气净化器

目录 一、风扇调速 二、通讯协议 三、净化器运行逻辑 一、风扇调速 单片机是不能直接驱动电机的&#xff0c;因为主芯片的驱动电流比较小(50mA左右)&#xff0c;他们之间正常还要有个电机驱动器&#xff0c;常用的有TB6612、L298和L9110等&#xff0c;目前项目用的这个电机它…

全国航空机场分布矢量数据/旅游景点poi/全国港口码头分布/地铁站分布/火车站分布/POI矢量数据

民用航空机场是指针对包括跑道型机场、表面直升机场、高架直升机场、船上直升机场、直升机水上平台、滑翔机场、水上机场、有人操纵气球施放场以及其他专供民用航空器起降的划定区域。民用航空机场分为通用航空机场和公共运输机场&#xff1b;不包括临时机场和专用机场。 根据中…

谷歌修复了安卓中的 28 个漏洞和 Pixel 设备中的 25 个错误

关注公众号&#xff1a; 网络研究观 获取更多信息 本周&#xff0c;谷歌工程师修复了Android 中的 28 个漏洞和 Pixel 设备中的 25 个错误&#xff0c;其中包括两个已经被利用的问题。 据报道&#xff0c;网络取证已利用 Google Pixel 0day 漏洞在没有 PIN 码的情况下解锁智能…

【附下载】2024全行业数字化转型企业建设解决方案PPT合集

精品推荐&#xff0c;2024全行业数字化转型企业建设解决方案PPT合集&#xff0c;精品PPT源格式共21份。 以下是资料目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a; 1.制造业数字化转型解决方案及应用.pptx 2.医院数字化网络解决方案.pptx 3.食品饮料工厂数字…

Vuex(vue 项目中实现 频繁、大范围数据共享的技术方案)

参考文档(点击查看) 好处 1.数据的存取一步到位&#xff0c;不需层层传递 2.数据的流动非常清晰 3.存储在Vuex中的数据都是响应式的&#xff08;数据更新后&#xff0c;使用数据的组件都会自动更新&#xff09; Vuex基础配置 npm i vuex3.6.2state中用来存储数据&#xff0c…

js中使let关键字报错,改用var关键字解决

js中使let关键字报错,改用var关键字解决 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;总结 项目场景&#xff1a; 使用 let 关键字报错&#xff0c;报错信息为&#xff1a; Uncaught ReferenceError: maxNum is not defined at getMaxNum (4-3.htm…