QT利用QAbstractTableModel 0x8读取访问权限辩论

[复制链接]
发表于 2025-11-1 05:54:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. #pragma once
  2. #include <QAbstractTableModel>
  3. #include <QModelIndex>
  4. #include <QVariant>
  5. #include <vector>
  6. class QtTableModel : public QAbstractTableModel {
  7.     Q_OBJECT
  8. public:
  9.     QtTableModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {}
  10.     ~QtTableModel();
  11.     void setData(const std::vector<std::vector<QVariant>>& data) {
  12.         beginResetModel();
  13.         this->data_ = data;
  14.         rowCount_ = data.size();
  15.         columnCount_ = !data.empty() ? data[0].size() : 0;
  16.         endResetModel();
  17.     }
  18.     int rowCount(const QModelIndex& parent = QModelIndex()) const override {
  19.         if (!parent.isValid()) {
  20.             return rowCount_;
  21.         }
  22.         return 0;
  23.     }
  24.     int columnCount(const QModelIndex& parent = QModelIndex()) const override {
  25.         if (!parent.isValid()) {
  26.             return columnCount_;
  27.         }
  28.         return 0;
  29.     }
  30.     QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override {
  31.         if (!index.isValid() || role != Qt::DisplayRole) {
  32.             return QVariant();
  33.         }
  34.         return data_[index.row()][index.column()];
  35.     }
  36.     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override {
  37.         if (role != Qt::DisplayRole) {
  38.             return QVariant();
  39.         }
  40.         if (orientation == Qt::Horizontal) {
  41.             // 返回列头数据,这里可以自定义
  42.             return QString("Column %1").arg(section + 1);
  43.         }
  44.         else {
  45.             // 返回行头数据,这里可以自定义
  46.             return QString("Row %1").arg(section + 1);
  47.         }
  48.     }
  49. private:
  50.     std::vector<std::vector<QVariant>> data_;
  51.     int rowCount_;
  52.     int columnCount_;
  53. };
  54. //
  55. //#include <QAbstractTableModel>
  56. //#include <QVector>
  57. //#include <QString>
  58. //class QtTabModel  : public QAbstractTableModel
  59. //{
  60. //        Q_OBJECT
  61. //
  62. //public:
  63. //        //QtTabModel(QObject *parent);
  64. //    QtTabModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {};
  65. //        ~QtTabModel();
  66. //    // 必须实现的方法
  67. //    int rowCount(const QModelIndex& parent = QModelIndex()) const override
  68. //    {
  69. //        Q_UNUSED(parent);
  70. //        return m_data.count();
  71. //    }
  72. //
  73. //    int columnCount(const QModelIndex& parent = QModelIndex()) const override
  74. //    {
  75. //        Q_UNUSED(parent);
  76. //        return m_columnNames.count();
  77. //    }
  78. //
  79. //    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
  80. //    {
  81. //        if (!index.isValid() || m_data.isEmpty())
  82. //            return QVariant();
  83. //
  84. //        if (role == Qt::DisplayRole) {
  85. //            return m_data.at(index.row()).at(index.column());
  86. //        }
  87. //        return QVariant();
  88. //    }
  89. //    // 添加数据的方法
  90. //    void addRow(const QVector<QString>& row) {
  91. //        beginInsertRows(QModelIndex(), rowCount(), rowCount());
  92. //        m_data.append(row);
  93. //        endInsertRows();
  94. //    }
  95. //    // 设置列名
  96. //    void setColumnNames(const QStringList& columnNames) {
  97. //        m_columnNames = columnNames;
  98. //    }
  99. //private:
  100. //    QVector<QVector<QString>> m_data; // 存储表格数据的二维向量
  101. //    QStringList m_columnNames; // 存储列名的列表
  102. //};
复制代码
 
  1. #include "QtTabModel.h"
  2. //QtTabModel::QtTabModel(QObject *parent)
  3.         //: QAbstractTableModel(parent)
  4. //{}
  5. //QtTabModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {}
  6. QtTableModel::~QtTableModel()
  7. {}
复制代码
QT利用QAbstractTableModel 0x8读取访问权限辩论 - txwtech - 博客园
QtTableModel* model;
model = new QtTableModel(); //如果未初始化,则会报错
 
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表