我想拦截默认情况下,在任何QLineEdit的插件创建一个QLineEdit的上下文菜单中的粘贴操作(见下图)如何处理Qt中QLineEdit上下文菜单中的动作?
有没有办法来重定向上下文的粘贴动作菜单通过任何方式?
我想拦截默认情况下,在任何QLineEdit的插件创建一个QLineEdit的上下文菜单中的粘贴操作(见下图)如何处理Qt中QLineEdit上下文菜单中的动作?
有没有办法来重定向上下文的粘贴动作菜单通过任何方式?
人们可以通过重载QLineEdit的小部件的contextMenuEvent在上下文菜单的操作拨弄。
编辑:
void LineEdit::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = createStandardContextMenu();
menu->addAction(tr("My Menu Item"));
//...
menu->exec(event->globalPos());
delete menu;
}
和代码,我实际使用,我的目的:
上面的链接的代码
menu = self.createStandardContextMenu()
menu.actions()[5].connect(self.paste) # The hard ref to the 6th item is not ideal but what can you do...
menu.exec_(event.globalPos())
你也可以使用'createStandardContextMenu()':'无效LineEdit ::的ContextMenuEvent(QContextMenuEvent *事件) { QMenu *菜单= createStandardContextMenu(); 的QAction *行动=菜单 - > EXEC(事件 - > globalPos()); 如果(动作 - >文本()比较( “&粘贴\ TCTRL + V”)== 0){ qDebug()<< “测试”; } }' – eyllanesc
@eyllanesc这是正确的。出于完整性,我编辑了我的答案以显示完整的代码。 – Woltan
你是什么意思重定向? ,粘贴的文字是不同的。 – eyllanesc
@eyllansec我一般想拦截事件和不同的方式处理数据。 – Woltan