2017-08-10 49 views
0

我想拦截默认情况下,在任何QLineEdit的插件创建一个QLineEdit的上下文菜单中的粘贴操作(见下图)如何处理Qt中QLineEdit上下文菜单中的动作?

enter image description here

有没有办法来重定向上下文的粘贴动作菜单通过任何方式?

+0

你是什么意思重定向? ,粘贴的文字是不同的。 – eyllanesc

+0

@eyllansec我一般想拦截事件和不同的方式处理数据。 – Woltan

回答

0

人们可以通过重载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()) 
+0

你也可以使用'createStandardContextMenu()':'无效LineEdit ::的ContextMenuEvent(QContextMenuEvent *事件) { QMenu *菜单= createStandardContextMenu(); 的QAction *行动=菜单 - > EXEC(事件 - > globalPos()); 如果(动作 - >文本()比较( “&粘贴\ TCTRL + V”)== 0){ qDebug()<< “测试”; } }' – eyllanesc

+0

@eyllanesc这是正确的。出于完整性,我编辑了我的答案以显示完整的代码。 – Woltan

相关问题