禁用Cell右键菜单
在Qt自定义表格的开开发中,当鼠标点击进入cell单元后,右键会弹出Cell自带的右键菜单,实际开发中需要自定义右键的内容或者屏蔽原来右键的功能 采用QStyledItemDelegate代理来实现
void CustomComBoboxDelegate::updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option, const QModelIndex &index) const
{
editor->setGeometry(option.rect);
editor->setContextMenuPolicy(Qt::NoContextMenu); // 禁用编辑器的右键菜单
}
bool CustomComBoboxDelegate::eventFilter(QObject *obj, QEvent *event)
{
QComboBox* comboBox = qobject_cast<QComboBox*>(obj);
if (comboBox && event->type() == QEvent::KeyPress) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_V && (keyEvent->modifiers() & Qt::ControlModifier)) {
// 拦截 Ctrl+V 事件的处理
return true;
}
}
return QStyledItemDelegate::eventFilter(obj, event);
}在这里插入代码片
代码实现
1)editor->setContextMenuPolicy(Qt::NoContextMenu); 这个代码用以屏蔽Cell单元格的右键菜单
2)if (keyEvent->key() == Qt::Key_V && (keyEvent->modifiers() & Qt::ControlModifier)) { return true;}
这个代码用以实现快捷键的拦截