要在QML的TableView中显示多个数据库数据,您需要编写一个自定义的Model来获取和管理这些数据。

以下是一个示例的自定义Model代码:

class MyTableModel : public QAbstractTableModel
{
    Q_OBJECT

public:
    MyTableModel(QObject *parent = nullptr)
        : QAbstractTableModel(parent)
    {
    }

    // 设置表格的行数和列数
    int rowCount(const QModelIndex &parent = QModelIndex()) const override
    {
        Q_UNUSED(parent);
        return m_data.size();
    }

    int columnCount(const QModelIndex &parent = QModelIndex()) const override
    {
        Q_UNUSED(parent);
        return 3; // 假设有3列数据
    }

    // 设置表格中每个单元格的数据
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
    {
        if (!index.isValid())
            return QVariant();

        if (role == Qt::DisplayRole || role == Qt::EditRole) {
            int row = index.row();
            int column = index.column();

            // 返回对应行列的数据
            if (column == 0)
                return m_data[row].column1;
            else if (column == 1)
                return m_data[row].column2;
            else if (column == 2)
                return m_data[row].column3;
        }

        return QVariant();
    }

    // 设置表格中每个单元格的标头
    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
    {
        if (role != Qt::DisplayRole)
            return QVariant();

        if (orientation == Qt::Horizontal) {
            if (section == 0)
                return "Column 1";
            else if (section == 1)
                return "Column 2";
            else if (section == 2)
                return "Column 3";
        }

        return QVariant();
    }

    // 添加数据到Model
    void addData(const QString &column1, const QString &column2, const QString &column3)
    {
        beginInsertRows(QModelIndex(), rowCount(), rowCount());
        Data newData;
        newData.column1 = column1;
        newData.column2 = column2;
        newData.column3 = column3;
        m_data.append(newData);
        endInsertRows();
    }

private:
    struct Data {
        QString column1;
        QString column2;
        QString column3;
    };

    QList<Data> m_data;
};

在QML中,您可以使用这个自定义Model来创建一个TableView并显示多个数据库数据:

import QtQuick 2.15
import QtQuick.Controls 2.15

TableView {
    id: tableView
    width: 400
    height: 300

    model: myModel

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

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

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

    // 创建自定义Model对象
    MyTableModel {
        id: myModel
    }
}

在QML中,您可以通过调用myModel.addData(column1, column2, column3)来添加数据到Model中。

请注意,这只是一个示例,您需要根据您的实际需求来修改和扩展自定义Model的代码

qml tableview使用自定义model显示多个数据库数据

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

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