qml TableView 的model是c++ QAbstractTableModel 继承的MyTableModel, 写一个例子并实现点击表头使用QSortFilterProxyModel实现列排序功能

动态 未结 0 117
小小草
小小草 LV1 2023年9月23日 23:40 发表
以下是一个使用QAbstractTableModel继承的MyTableModel的qml TableView例子,并实现了点击表头使用QSortFilterProxyModel实现列排序功能: main.cpp: ```cpp #include #include #include "mytablemodel.h" #include int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); qmlRegisterType("MyTableModel", 1, 0, "MyTableModel"); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); if (engine.rootObjects().isEmpty()) return -1; return app.exec(); } ``` mytablemodel.h: ```cpp #ifndef MYTABLEMODEL_H #define MYTABLEMODEL_H #include class MyTableModel : public QAbstractTableModel { Q_OBJECT public: explicit MyTableModel(QObject *parent = nullptr); // QAbstractItemModel interface public: int rowCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: QList> m_data; }; #endif // MYTABLEMODEL_H ``` mytablemodel.cpp: ```cpp #include "mytablemodel.h" MyTableModel::MyTableModel(QObject *parent) : QAbstractTableModel(parent) { m_data << (QList() << "Name" << "Age" << "Gender") << (QList() << "Tom" << 20 << "Male") << (QList() << "Jerry" << 18 << "Female") << (QList() << "Mike" << 22 << "Male"); } int MyTableModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent) return m_data.size(); } int MyTableModel::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent) return m_data.first().
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复