QT使用QAbstractTableModel 0x8读取访问权限冲突

复制代码
#pragma once
#include <QAbstractTableModel>
#include <QModelIndex>
#include <QVariant>
#include <vector>

class QtTableModel : public QAbstractTableModel {
    Q_OBJECT

public:
    QtTableModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {}
    ~QtTableModel();
    void setData(const std::vector<std::vector<QVariant>>& data) {
        beginResetModel();
        this->data_ = data;
        rowCount_ = data.size();
        columnCount_ = !data.empty() ? data[0].size() : 0;
        endResetModel();
    }

    int rowCount(const QModelIndex& parent = QModelIndex()) const override {
        if (!parent.isValid()) {
            return rowCount_;
        }
        return 0;
    }

    int columnCount(const QModelIndex& parent = QModelIndex()) const override {
        if (!parent.isValid()) {
            return columnCount_;
        }
        return 0;
    }

    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override {
        if (!index.isValid() || role != Qt::DisplayRole) {
            return QVariant();
        }
        return data_[index.row()][index.column()];
    }

    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override {
        if (role != Qt::DisplayRole) {
            return QVariant();
        }
        if (orientation == Qt::Horizontal) {
            // 返回列头数据,这里可以自定义
            return QString("Column %1").arg(section + 1);
        }
        else {
            // 返回行头数据,这里可以自定义
            return QString("Row %1").arg(section + 1);
        }
    }

private:
    std::vector<std::vector<QVariant>> data_;
    int rowCount_;
    int columnCount_;
};
//
//#include <QAbstractTableModel>
//#include <QVector>
//#include <QString>
//class QtTabModel  : public QAbstractTableModel
//{
//	Q_OBJECT
//
//public:
//	//QtTabModel(QObject *parent);
//    QtTabModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {};
//	~QtTabModel();
//    // 必须实现的方法
//    int rowCount(const QModelIndex& parent = QModelIndex()) const override 
//    {
//        Q_UNUSED(parent);
//        return m_data.count();
//    }
//
//    int columnCount(const QModelIndex& parent = QModelIndex()) const override 
//    {
//        Q_UNUSED(parent);
//        return m_columnNames.count();
//    }
//
//    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
//    {
//        if (!index.isValid() || m_data.isEmpty())
//            return QVariant();
//
//        if (role == Qt::DisplayRole) {
//            return m_data.at(index.row()).at(index.column());
//        }
//        return QVariant();
//    }
//    // 添加数据的方法
//    void addRow(const QVector<QString>& row) {
//        beginInsertRows(QModelIndex(), rowCount(), rowCount());
//        m_data.append(row);
//        endInsertRows();
//    }
//    // 设置列名
//    void setColumnNames(const QStringList& columnNames) {
//        m_columnNames = columnNames;
//    }
//private:
//    QVector<QVector<QString>> m_data; // 存储表格数据的二维向量
//    QStringList m_columnNames; // 存储列名的列表
//};

#include "QtTabModel.h"

//QtTabModel::QtTabModel(QObject *parent)
	//: QAbstractTableModel(parent)
//{}

//QtTabModel(QObject* parent = nullptr) : QAbstractTableModel(parent) {}

QtTableModel::~QtTableModel()
{}

QT使用QAbstractTableModel 0x8读取访问权限冲突 - txwtech - 博客园

QtTableModel* model;

model = new QtTableModel(); //如果未初始化,则会报错

相关推荐
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
麦兜*3 小时前
Swift + Xcode 开发环境搭建终极指南
开发语言·ios·swiftui·xcode·swift·苹果vision pro·swift5.6.3
lxmyzzs3 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
大橘3 小时前
【qml-4】qml与c++交互(类型多例)
qt·qml
萧鼎4 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
艾伦~耶格尔4 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试