qt_demoe/video/videobox/videobox.h

132 lines
3.7 KiB
C
Raw Normal View History

2021-11-09 12:39:42 +00:00
#ifndef VIDEOBOX_H
#define VIDEOBOX_H
/**
* :feiyangqingyun(QQ:517216493) 2021-11-08
* 1.
2023-12-23 05:30:26 +00:00
* 2. 4x4/5x5便100/255
* 3. 1x4/4x2便axb
* 4.
* 5.
* 6.
* 7.
* 8.
* 9.
2021-11-09 12:39:42 +00:00
*/
#include <QObject>
#include <QWidget>
#include <QMap>
class QMenu;
class QWidget;
class QGridLayout;
#ifdef quc
class Q_DECL_EXPORT VideoBox : public QObject
#else
class VideoBox : public QObject
#endif
{
Q_OBJECT
public:
explicit VideoBox(QObject *parent = 0);
private:
2024-02-26 02:34:39 +00:00
//最大通道数量
int maxCount;
//当前布局类型
QString layoutType;
2021-11-09 12:39:42 +00:00
//表格布局存放通道
QGridLayout *gridLayout;
//视频控件集合
QWidgetList widgets;
//主菜单子菜单文字标识
QString menuFlag;
QString actionFlag;
2023-12-23 05:30:26 +00:00
//可以控制每个子菜单是否可见
QList<bool> visibles;
2021-11-09 12:39:42 +00:00
//布局方案标识集合
2023-12-06 11:15:52 +00:00
QMap<QString, QStringList> types;
void addMenu(QMenu *menu, const QString &type);
2021-11-09 12:39:42 +00:00
2023-12-23 05:30:26 +00:00
private:
//常规及异形通道布局
2024-02-26 02:34:39 +00:00
void change_layout_normal(int index, int row, int column);
void change_layout_custom(int index, int type);
2023-12-23 05:30:26 +00:00
//设置可见
2024-02-26 02:34:39 +00:00
void change_layout_visible(int start, int end);
2023-12-23 05:30:26 +00:00
//异形布局(l表示右侧底部环绕布局/o表示上下左右环绕布局)
2024-02-26 02:34:39 +00:00
void change_layout_l(const QList<int> &indexs);
void change_layout_o(const QList<int> &indexs);
2023-12-23 05:30:26 +00:00
public:
2024-02-26 02:34:39 +00:00
//获取和设置当前布局类型
QString getLayoutType() const;
void setLayoutType(const QString &layoutType);
2023-12-06 11:15:52 +00:00
//获取和设置视频控件集合
QWidgetList getWidgets() const;
2021-11-09 12:39:42 +00:00
void setWidgets(QWidgetList widgets);
2023-12-06 11:15:52 +00:00
//设置表格布局
void setLayout(QGridLayout *gridLayout);
2023-07-15 00:58:15 +00:00
2021-11-09 12:39:42 +00:00
//设置主菜单子菜单文字标识
void setMenuFlag(const QString &menuFlag);
void setActionFlag(const QString &actionFlag);
2023-12-23 05:30:26 +00:00
//设置子菜单可见
void setVisibles(const QList<bool> &visibles);
2021-11-09 12:39:42 +00:00
2023-12-23 05:30:26 +00:00
//添加行列布局(必须在initMenu前调用)
void appendType(int index, int row, int column);
//初始化菜单
void initMenu(QMenu *menu);
2021-11-09 12:39:42 +00:00
2023-12-23 05:30:26 +00:00
public Q_SLOTS:
2021-11-09 12:39:42 +00:00
//显示和隐藏所有通道
2024-02-26 02:34:39 +00:00
void show_all();
void hide_all();
2021-11-09 12:39:42 +00:00
2023-12-23 05:30:26 +00:00
//菜单切换布局槽函数
2024-02-26 02:34:39 +00:00
void change_layout();
void change_layout(int type, int index);
2023-12-06 11:15:52 +00:00
2023-12-23 05:30:26 +00:00
//自定义布局通道切换函数
2024-02-26 02:34:39 +00:00
void change_layout_y_1_2(int index);
void change_layout_y_1_3(int index);
void change_layout_y_1_5(int index);
void change_layout_y_1_8(int index);
void change_layout_y_1_9(int index);
void change_layout_y_1_10(int index);
void change_layout_y_1_12(int index);
void change_layout_y_1_16(int index);
2021-11-09 12:39:42 +00:00
2023-12-23 05:30:26 +00:00
//常规布局通道切换函数
2024-02-26 02:34:39 +00:00
void change_layout_1(int index);
void change_layout_4(int index);
void change_layout_6(int index);
void change_layout_8(int index);
void change_layout_9(int index);
void change_layout_13(int index);
void change_layout_16(int index);
void change_layout_25(int index);
void change_layout_36(int index);
void change_layout_64(int index);
2021-11-09 12:39:42 +00:00
Q_SIGNALS:
//画面布局切换信号
2024-02-26 02:34:39 +00:00
void changeLayout(int type, const QString &layoutType, bool max);
2021-11-09 12:39:42 +00:00
};
#endif // VIDEOBOX_H