1、概述
源码放在文章末尾
面板容器控件包含如下功能:
-
- 支持所有widget子类对象,自动产生滚动条。
-
- 支持自动拉伸自动填充。
-
- 提供接口获取容器内的所有对象的指针。
-
- 可设置是否自动拉伸宽度高度。
-
- 可设置设备面板之间的间距和边距。
超级图形字体类包含如下功能:
-
- 可传入多种图形字体文件,一个类通用所有图形字体。
-
- 默认已经内置了阿里巴巴图形字体FontAliBaBa、国际知名图形字体FontAwesome、天气图形字体FontWeather。
-
- 可设置 QLabel、QAbstractButton 文本为图形字体。
-
- 可设置图形字体作为 QAbstractButton 按钮图标。
-
- 内置万能的方法 getPixmap 将图形字体值转换为图片。
-
- 无论是设置文本、图标、图片等都可以设置图标的大小、尺寸、颜色等参数。
-
- 内置超级导航栏样式设置,将图形字体作为图标设置到按钮。
-
- 支持各种颜色设置比如正常颜色、悬停颜色、按下颜色、选中颜色。
-
- 可设置导航的位置为 left、right、top、bottom 四种。
-
- 可设置导航加深边框颜色和粗细大小。
-
- 导航面板的各种切换效果比如鼠标悬停、按下、选中等都自动处理掉样式设置。
-
- 全局静态方法,接口丰富,使用极其简单方便。
项目部分代码如下:
#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_OBJECTQ_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