QStyledItemDelegate и QStandardItem, предотвращающие изменение текста, разрешают только выделять и копировать

У меня есть простой 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 ответ

Если ваши данные могут быть показаны в виде простого текста, вы можете вернуть QLineEdit в режиме только для чтения. Если у вас есть изображения или другие типы данных, возможно, выбираемый QLabel с некоторым html-кодом (чтобы сделать QLabel выбираемым, вы должны включить Qt::TextSelectableByMouse или же Qt::TextSelectableByKeyboard в флагах взаимодействия ярлыка).

Другие вопросы по тегам