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

QStyledItemDelegate and QStandardItem preventing change text , enable only select and copy

本文关键字:启用 选择 复制 文本 QStandardItem QStyledItemDelegate      更新时间:2023-10-16

我有一个简单的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;
}

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

如果您的数据可以显示为简单文本,则可以以只读模式返回 QLineEdit。如果您有图像或其他类型的数据,也许是一个可选的 QLabel,其中包含一些 html(要使 QLabel 可选,您必须在标签的交互标志中包含Qt::TextSelectableByMouseQt::TextSelectableByKeyboard)。