下面是一个使用 QTableView 的简单例程,演示如何在 Qt 中创建一个表格并向其中添加数据:

#include <QtWidgets/QApplication>
#include <QtWidgets/QTableView>
#include <QtWidgets/QHBoxLayout>
#include <QtCore/QAbstractTableModel>

// 定义一个简单的表格模型类
class MyModel : public QAbstractTableModel
{
public:
    MyModel(QObject *parent = nullptr)
        : QAbstractTableModel(parent)
    {
        // 初始化表格数据
        m_data = {
            {1, 'John', 'Doe'},
            {2, 'Jane', 'Doe'},
            {3, 'Bob', 'Smith'},
            {4, 'Alice', 'Johnson'}
        };
    }

    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;
    }

    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
    {
        if (!index.isValid())
            return QVariant();

        if (role == Qt::DisplayRole)
            return m_data[index.row()][index.column()];

        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) {
            switch (section) {
                case 0:
                    return QVariant('ID');
                case 1:
                    return QVariant('First Name');
                case 2:
                    return QVariant('Last Name');
                default:
                    return QVariant();
            }
        }

        return QVariant(section + 1);
    }

private:
    QVector<QVector<QString>> m_data;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建一个表格视图和一个表格模型
    QTableView tableView;
    MyModel model;
    tableView.setModel(&model);

    // 将表格视图添加到一个布局中并显示
    QHBoxLayout layout;
    layout.addWidget(&tableView);
    QWidget widget;
    widget.setLayout(&layout);
    widget.show();

    return a.exec();
}

在这个例程中,我们首先定义了一个简单的表格模型类MyModel,它继承自QAbstractTableModel。这个模型类中包含了一个QVector类型的成员变量m_data,用于存储表格中的数据。在模型类的构造函数中,我们初始化了这个变量,并在rowCountcolumnCount函数中返回了表格的行数和列数。在dataheaderData函数中,我们根据QModelIndex对象的行号和列号来返回单元格的数据和标题。

main函数中,我们创建了一个QTableView对象和一个MyModel对象,并将模型对象设置为表格视图的模型。然后,我们将表格视图添加到一个水平布局中,并将这个布局设置为窗口的主布局。最后,我们显示了这个窗口,并启动了Qt应用程序的事件循环。运行程序后,我们可以看到一个简单的表格显示在程序窗口中。

Qt QTableView 使用教程:创建表格并添加数据 (C++)

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

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