mirror of
https://github.com/zhuzichu520/FluentUI.git
synced 2025-07-07 03:25:24 +08:00
update
This commit is contained in:
73
src/FluTableModel.cpp
Normal file
73
src/FluTableModel.cpp
Normal file
@ -0,0 +1,73 @@
|
||||
#include "FluTableModel.h"
|
||||
|
||||
FluTableModel::FluTableModel(QObject *parent) : QAbstractTableModel{parent}{
|
||||
|
||||
}
|
||||
|
||||
int FluTableModel::rowCount(const QModelIndex &parent) const {
|
||||
return _rows.count();
|
||||
}
|
||||
|
||||
int FluTableModel::columnCount(const QModelIndex &parent) const {
|
||||
return this->_columnSource.size();
|
||||
}
|
||||
|
||||
QVariant FluTableModel::data(const QModelIndex &index, int role) const {
|
||||
switch (role) {
|
||||
case FluTableModel::RowModel:
|
||||
return QVariant::fromValue(_rows.at(index.row()));
|
||||
case FluTableModel::ColumnModel:
|
||||
return QVariant::fromValue(_columnSource.at(index.column()));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> FluTableModel::roleNames() const {
|
||||
return {
|
||||
{FluTableModel::RowModel, "rowModel"},
|
||||
{FluTableModel::ColumnModel, "columnModel"}
|
||||
};
|
||||
}
|
||||
|
||||
QModelIndex FluTableModel::parent(const QModelIndex &child) const {
|
||||
return {};
|
||||
}
|
||||
|
||||
QModelIndex FluTableModel::index(int row, int column, const QModelIndex &parent) const {
|
||||
if (!hasIndex(row, column, parent) || parent.isValid())
|
||||
return {};
|
||||
return createIndex(row, column);
|
||||
}
|
||||
|
||||
void FluTableModel::clear(){
|
||||
beginResetModel();
|
||||
this->_rows.clear();
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
QVariant FluTableModel::getRow(int rowIndex){
|
||||
return _rows.at(rowIndex);
|
||||
}
|
||||
|
||||
void FluTableModel::setRow(int rowIndex,QVariant row){
|
||||
_rows.replace(rowIndex,row.toMap());
|
||||
Q_EMIT dataChanged(index(rowIndex, 0), index(rowIndex, columnCount() - 1));
|
||||
}
|
||||
|
||||
void FluTableModel::insertRow(int rowIndex,QVariant row){
|
||||
beginInsertRows(QModelIndex(), rowIndex, rowIndex);
|
||||
_rows.insert(rowIndex,row.toMap());
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void FluTableModel::removeRow(int rowIndex,int rows){
|
||||
beginRemoveRows(QModelIndex(), rowIndex, rowIndex + rows - 1);
|
||||
_rows = _rows.mid(0, rowIndex) + _rows.mid(rowIndex + rows);
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
void FluTableModel::appendRow(QVariant row){
|
||||
insertRow(rowCount(),row);
|
||||
}
|
51
src/FluTableModel.h
Normal file
51
src/FluTableModel.h
Normal file
@ -0,0 +1,51 @@
|
||||
#ifndef FLUTABLEMODEL_H
|
||||
#define FLUTABLEMODEL_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QAbstractItemModel>
|
||||
#include <QtQml/qqml.h>
|
||||
#include "stdafx.h"
|
||||
|
||||
class FluTableModel : public QAbstractTableModel {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY_AUTO(int, dataSourceSize)
|
||||
Q_PROPERTY_AUTO(QList<QVariantMap>, columnSource)
|
||||
Q_PROPERTY_AUTO(QList<QVariantMap>, rows)
|
||||
Q_PROPERTY(int rowCount READ rowCount CONSTANT)
|
||||
QML_NAMED_ELEMENT(FluTableModel)
|
||||
public:
|
||||
enum TableModelRoles {
|
||||
RowModel = 0x0101,
|
||||
ColumnModel = 0x0102
|
||||
};
|
||||
|
||||
explicit FluTableModel(QObject *parent = nullptr);
|
||||
|
||||
[[nodiscard]] int rowCount(const QModelIndex &parent = {}) const override;
|
||||
|
||||
[[nodiscard]] int columnCount(const QModelIndex &parent = {}) const override;
|
||||
|
||||
[[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||
|
||||
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
[[nodiscard]] QModelIndex parent(const QModelIndex &child) const override;
|
||||
|
||||
[[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent = {}) const override;
|
||||
|
||||
Q_INVOKABLE void clear();
|
||||
|
||||
Q_INVOKABLE QVariant getRow(int rowIndex);
|
||||
|
||||
Q_INVOKABLE void setRow(int rowIndex,QVariant row);
|
||||
|
||||
Q_INVOKABLE void insertRow(int rowIndex,QVariant row);
|
||||
|
||||
Q_INVOKABLE void removeRow(int rowIndex,int rows = 1);
|
||||
|
||||
Q_INVOKABLE void appendRow(QVariant row);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // FLUTABLEMODEL_H
|
@ -267,7 +267,7 @@ Rectangle {
|
||||
onReleased: {
|
||||
}
|
||||
onDoubleClicked:{
|
||||
if(typeof(display) == "object"){
|
||||
if(item_table_loader.isObject){
|
||||
return
|
||||
}
|
||||
loader_edit.display = item_table_loader.display
|
||||
|
@ -267,7 +267,7 @@ Rectangle {
|
||||
onReleased: {
|
||||
}
|
||||
onDoubleClicked:{
|
||||
if(typeof(display) == "object"){
|
||||
if(item_table_loader.isObject){
|
||||
return
|
||||
}
|
||||
loader_edit.display = item_table_loader.display
|
||||
|
Reference in New Issue
Block a user