QStyledItemDelegate和QStandardItem阻止更改文本,仅启用选择和复制

时间:2012-11-28 09:19:34

标签: c++ qtableview qstandarditemmodel qstyleditemdelegate

我有一个简单的QStandardItem和QTableView以及QStyledItemDelegate。他们有代表,我想禁用用户更改表中列的内容的可能性,并且只允许选择和复制。我猜这与QStyledItemDelegate::createEditor相关。

当我将其设置为0时,它只会禁用所有内容。

QWidget *InfoTableItemDelegate::createEditor(QWidget *parent,
                                    const QStyleOptionViewItem &option,
                                    const QModelIndex &index) const
{
    // return QStyledItemDelegate::createEditor(parent, option, index);
    return 0;
}

我的问题是,我如何定义它以便我只能选择和复制,并禁用编辑它的选项,如删除或更改文本

1 个答案:

答案 0 :(得分:1)

如果您的数据可以显示为简单文本,那么您可以在read-only mode中返回QLineEdit。如果您有图像或其他类型的数据,可能是带有一些html的可选QLabel(要使QLabel可选,您必须在label's interaction flags中包含Qt::TextSelectableByMouseQt::TextSelectableByKeyboard