首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTablevView和QItemDelegate

QTablevView和QItemDelegate
EN

Stack Overflow用户
提问于 2013-09-27 12:45:33
回答 2查看 901关注 0票数 0

我正在QTableView的QStandardItemModel中工作。我在从一个QTextEdit派生的类中使用QItemDelegate类。它包括在每个列的单元格内编辑文本,请参阅所附图片。

是否可以排除tableView第三列(所有单元格)包含此文本编辑?这意味着我不想在第三列单元格中编辑这个文本。

这是我对tableview的初始化代码:--

代码语言:javascript
复制
//Set model & deligate
ui->testCaseTableView->setModel(model);
ui->testCaseTableView->setItemDelegate(mydeligate);

这是我的快乐之门密码:--

代码语言:javascript
复制
QWidget* textViewDeligate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{

    QTextEdit *tableEdit = new QTextEdit(parent);
    return tableEdit;
}

void textViewDeligate::setEditorData ( QWidget * editor, const QModelIndex & index ) const
{

    QString value = index.model()->data(index,Qt::EditRole).toString();

    QTextEdit *tableEditCopy = static_cast<QTextEdit*>(editor);
    tableEditCopy->setPlainText(value);
}

void    textViewDeligate::setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const
{
    QTextEdit *tableEditCopy = static_cast<QTextEdit*>(editor);
    QString str = tableEditCopy->toPlainText();

    model->setData(index, str, Qt::EditRole);

}

void    textViewDeligate::updateEditorGeometry ( QWidget *editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const
{

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-28 00:43:34

可以使用QAbstractItemView::setItemDelegateForColumn方法禁用列中的委托:

代码语言:javascript
复制
ui->testCaseTableView->setItemDelegate(mydelegate);
ui->testCaseTableView->setItemDelegateForColumn(2, 0);
票数 0
EN

Stack Overflow用户

发布于 2013-09-27 12:55:10

要排除第三列将QTextEdit作为编辑器小部件,可以执行以下操作:

代码语言:javascript
复制
QWidget* textViewDeligate::createEditor(QWidget *parent,
                                        const QStyleOptionViewItem &option,
                                        const QModelIndex &index) const
{
    if (index.column() != 2) {
        // QTextEdit as editor for all columns but third.
        QTextEdit *tableEdit = new QTextEdit(parent);
        return tableEdit;
    } else {
        // Or return 0 to prevent editing this.
        return QItemDelegate::createEditor(parent, option, index);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19051125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档