QT中TableView,Model,Delegate使用实例

本文详细介绍了在QT开发中如何在QTableView中加载自定义Model,并结合自定义Delegate实现特定编辑控件的集成,提供了一个实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QTableView中加载自定义的Modle,并且使用自定以的编辑控件的实现实例记录

//mainwindow.cpp文件

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->actionInsertRow, SIGNAL(triggered()), this, SLOT(on_menu_insertRow()));
    InitTableView();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::InitTableView()
{
    MyTableModle *modle = new MyTableModle(ui->tableView);
    ui->tableView->setEditTriggers(QAbstractItemView::EditTrigger::DoubleClicked);
    ui->tableView->setModel(modle);

    MyTableItemDelegate *itemDelegate = new MyTableItemDelegate();
    ui->tableView->setItemDelegate(itemDelegate);
    //ui->tableView->setItemDelegateForColumn(8, itemDelegate);
    //ui->tableView->setItemDelegateForRow(8, itemDelegate);
}

void MainWindow::on_menu_insertRow()
{
    ui->tableView->model()->insertRow(ui->tableView->model()->rowCount());
}
//MyTableModle.h 文件

#ifndef MyTableModle_H
#define MyTableModle_H

#include <QAbstractTableModel>
#include <qvector.h>
#include <qmap.h>

class MyTableModle : public QAbstractTableModel
{
    Q_OBJECT

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

    // Header:
    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;

    bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override;

    // Basic functionality:
    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
    int columnCount(const QModelIndex &parent = QModelIndex()) const override;

    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

    // Editable:
    bool setData(const QModelIndex &index, const QVariant &value,
                 int role = Qt::EditRole) override;

    Qt::ItemFlags flags(const QModelIndex& index) const override;

    // Add data:
    bool insertRows(int row, int count, const QMo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值