64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#ifndef F_GLOBAL_H
|
|
#define F_GLOBAL_H
|
|
#include <QAbstractListModel>
|
|
#include <QDebug>
|
|
#include <QListView>
|
|
#include <QPainter>
|
|
#include <QPixmap>
|
|
#include <QStyledItemDelegate>
|
|
#include <QVariant>
|
|
#include <QtWidgets>
|
|
#include <variant>
|
|
#include "component/SVG.h"
|
|
template <typename T>
|
|
class Model_导航 : public QAbstractListModel {
|
|
public:
|
|
explicit Model_导航(QObject* parent = nullptr) : QAbstractListModel(parent) {}
|
|
int rowCount(const QModelIndex& parent = QModelIndex()) const override { return items.size(); }
|
|
QVariant data(const QModelIndex& index, int role) const override {
|
|
if (!index.isValid() || index.row() >= items.size())
|
|
{
|
|
return QVariant();
|
|
}
|
|
if (role == Qt::DisplayRole)
|
|
{
|
|
int i = index.row();
|
|
return QVariant::fromValue(items[i]);
|
|
}
|
|
return QVariant();
|
|
}
|
|
void setDataList(const QVector<T>& dataList) {
|
|
beginResetModel();
|
|
items = dataList;
|
|
endResetModel();
|
|
}
|
|
QVector<T> items;
|
|
};
|
|
|
|
|
|
|
|
struct 导航_Dat1 {
|
|
QString text;
|
|
QString title;
|
|
QString detail;
|
|
SVGImage_Render icon;
|
|
QWidget* widget{};
|
|
};
|
|
|
|
struct 导航_Dat2 {
|
|
QString text;
|
|
};
|
|
|
|
class 导航_Dat {
|
|
public:
|
|
导航_Dat() {}
|
|
std::variant<导航_Dat1, 导航_Dat2> data;
|
|
导航_Dat(const std::variant<导航_Dat1, 导航_Dat2>& data) : data(data) {}
|
|
};
|
|
|
|
|
|
|
|
Q_DECLARE_METATYPE(导航_Dat)
|
|
|
|
#endif
|