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

时间:2015-02-25 09:57:17

标签: c++ qt

目前,我正在编写一个编辑程序。我想为我的自定义函数分配三个快捷键(QKeySequence :: Cut),(QKeySequence :: Copy)和(QKeySequence :: Paste)。但是,它不能像我期望的那样工作。

为了测试,我打开了#34;应用程序示例"来自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);

令人惊讶的是,快捷键仍然像以前一样工作。

另一个测试是:

  1. 将所有操作连接到自定义插槽。
  2. 将所有键序列分配给已连接到我的自定义插槽的操作。
  3. 然后,我的结果是

    1. 单击工具栏上的剪切,复制,粘贴转到我的自定义插槽。
    2. 快捷键与我的自定义插槽独立工作。
    3. 欢迎任何建议。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

由于Sigil的代码,我找到了覆盖默认快捷方式的方法。

我使用以下代码:

在标题中删除一个新动作:

  QShortcut &m_Paste1;

然后,在类的构造函数中:

m_Paste1(*(new QShortcut(QKeySequence(QKeySequence::Paste), this, 0, 0, Qt::WidgetShortcut))),

最后,将它连接到您自己的插槽

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