在QML中,可以使用C++自定义的headmodel来显示表头。下面是一个简单的示例:

假设我们有一个C++类HeadModel,用于提供表头数据:

class HeadModel : public QAbstractListModel
{
    Q_OBJECT

public:
    explicit HeadModel(QObject *parent = nullptr);

    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
    QHash<int, QByteArray> roleNames() const override;

private:
    QStringList m_headers;
};

HeadModel::HeadModel(QObject *parent)
    : QAbstractListModel(parent)
{
    m_headers << "Column 1" << "Column 2" << "Column 3";
}

int HeadModel::rowCount(const QModelIndex &parent) const
{
    if (parent.isValid())
        return 0;

    return m_headers.count();
}

QVariant HeadModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (index.row() < 0 || index.row() >= m_headers.count())
        return QVariant();

    if (role == Qt::DisplayRole)
        return m_headers.at(index.row());

    return QVariant();
}

QHash<int, QByteArray> HeadModel::roleNames() const
{
    QHash<int, QByteArray> roles;
    roles[Qt::DisplayRole] = "display";

    return roles;
}

然后,在QML中使用TableView来显示表格,并使用自定义的headmodel来显示表头:

import QtQuick 2.15
import QtQuick.Controls 2.15

TableView {
    id: tableView
    width: 400
    height: 300

    TableViewColumn {
        role: "display"
        title: "Column 1"
        width: 100
    }

    TableViewColumn {
        role: "display"
        title: "Column 2"
        width: 100
    }

    TableViewColumn {
        role: "display"
        title: "Column 3"
        width: 100
    }

    model: HeadModel {}
}

在这个示例中,TableView的列使用了TableViewColumn,并且通过role属性指定了要显示的数据。HeadModel实例作为TableView的model,用于提供表头数据

qml tabelview根据C++自定义的headmodel显示表头

原文地址: https://www.cveoy.top/t/topic/hJXR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录