C++ 将剪切、复制、粘贴快捷方式更改为Qt 5中的自定义插槽

C++ 将剪切、复制、粘贴快捷方式更改为Qt 5中的自定义插槽,c++,qt,C++,Qt,目前,我正在编写一个编辑器程序。我想为我的自定义函数分配三个快捷键(QKeySequence::Cut)、(QKeySequence::Copy)和(QKeySequence::Paste)。然而,它并没有像我期望的那样起作用 为了进行测试,我从QtCreator打开了“应用程序示例”。然后,我尝试禁用所有快捷键,如下所示: //cutAct->setShortcuts(QKeySequence::Cut); connect(cutAct, SIGNAL(triggered()),

目前,我正在编写一个编辑器程序。我想为我的自定义函数分配三个快捷键(QKeySequence::Cut)、(QKeySequence::Copy)和(QKeySequence::Paste)。然而,它并没有像我期望的那样起作用

为了进行测试,我从QtCreator打开了“应用程序示例”。然后,我尝试禁用所有快捷键,如下所示:

//cutAct->setShortcuts(QKeySequence::Cut);    
connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut()));

copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this);
//copyAct->setShortcuts(QKeySequence::Copy);

connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy()));

pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this);
//pasteAct->setShortcuts(QKeySequence::Paste);
令人惊讶的是,快捷键仍然像以前一样工作

另一项测试是:

  • 将所有操作连接到自定义插槽
  • 将所有键序列分配给已连接到自定义插槽的操作 那么,我的结果是

  • 单击工具栏上的“剪切、复制、粘贴”转到我的自定义插槽
  • 快捷键与我的自定义插槽独立工作
  • 欢迎任何意见。
    非常感谢。

    多亏了Sigil代码,我找到了覆盖默认快捷方式的方法

    我使用以下代码:

    在标题中删除新操作:

      QShortcut &m_Paste1;
    
    然后,在类的构造函数中:

    m_Paste1(*(new QShortcut(QKeySequence(QKeySequence::Paste), this, 0, 0, Qt::WidgetShortcut))),
    
    最后,将其连接到您自己的插槽

    connect(&m_Paste1, SIGNAL(activated()), this, SLOT(paste()));
    

    您没有覆盖默认操作,您只是将自定义操作添加到默认行为中,顺便说一句,覆盖回复的默认快捷键不是一个好的做法。我想要覆盖默认操作的原因是,默认操作仅为works文本,同时我想要复制/粘贴文本和其他类似html元素的内容。我在和中发现了一些东西。但是,我仍然需要此问题的解决方案。那么,为什么不连接插槽,然后覆盖剪贴板内容?我正在使用Web编辑器程序,因此我要执行以下操作:-如果选择了文本,则复制/粘贴快捷方式是正常的,因为它是默认实现的。-当我想为html标记创建一个复制/粘贴快捷方式时,问题就出现了。例如:用户单击文本框(相当于tag)以选择它。然后,我想使用Ctrl+C将整个元素复制到剪贴板,然后转到另一个页面“Ctrl+V”,将其附加到html源代码中。因此,我希望覆盖默认插槽,而不是剪贴板中的内容。