【QT】解决QTableView修改合并单元格内容无法修改到合并范围内的单元格

问题:修改合并单元格的内容

修改合并单元格的内容时,希望直接修改到合并范围内的单元格,Qt没有实现这个功能,需要自己写出 Delegate来实现

方案:Delegate

class EditDelegate : public QStyledItemDelegate
{
   
public:
    EditDelegate(QTableView *view)
        : tableView(view)
    {
   }

public:
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &) const override
    {
   
        // 这里你可以根据需要返回一个编辑控件,例如QLineEdit或QComboBox等。
        QLineEdit *editor = new QLineEdit(parent);
        return editor;
    }

protected:
    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
    {
   
        QLineEdit *lineEdit = static_cast<QLineEdit *>(editor);
        QString value = lineEdit->text();

        // 获取合并的行、列
        int rowSpan = tableView->rowSpan(index.row(), index.column());
        int columnSpan = tableView->columnSpan(index.row(), index.column());

        // 通过合并的行:修改ModelIndex的行索引,将修改的值给到所有的合并范围的单元格中
        if (rowSpan > 1)
        {
   
            for (int i = 1; i <= rowSpan; i++)
            {
   
                QVariant data = model->data(index, Qt::EditRole);
                QModelIndex mIndex = model->index(index.row() + i - 1, index.column());
                model->setData(mIndex, value, Qt::EditRole);
            }
        }
        else
        {
   
            // 编辑普通单元格
            tableView->edit(index);
        }
    }

private:
    QTableView *tableView;
};

在使用的时候将Delegate设置对应的列或者行即可

tableView->setItemDelegateForColumn(1, new EditDelegate(tableView));

相关推荐

  1. 【jxls 单元合并

    2023-12-19 11:50:04       20 阅读
  2. EsayExcel读取合并单元

    2023-12-19 11:50:04       56 阅读
  3. 【Excel】合并复杂单元

    2023-12-19 11:50:04       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-19 11:50:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-19 11:50:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-19 11:50:04       82 阅读
  4. Python语言-面向对象

    2023-12-19 11:50:04       91 阅读

热门阅读

  1. python如何使用update

    2023-12-19 11:50:04       57 阅读
  2. P1009 [NOIP1998 普及组] 阶乘之和题解

    2023-12-19 11:50:04       55 阅读
  3. c++中使用互斥量

    2023-12-19 11:50:04       62 阅读
  4. ༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻

    2023-12-19 11:50:04       48 阅读
  5. 每日一题:Leetcode1314.矩阵区域和

    2023-12-19 11:50:04       58 阅读