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

标签 c++ qt

目前,我正在开发一个编辑器程序。我想为我的自定义功能分配三个快捷键(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);

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

另一个测试是:

  1. 将所有操作连接到自定义插槽。
  2. 将所有按键序列分配给已连接到我的自定义插槽的操作。

那么,我的结果是

  1. 点击工具栏上的“剪切”、“复制”、“粘贴”进入我的自定义插槽。
  2. 快捷键与我的自定义插槽独立工作。

欢迎任何建议。 非常感谢。

最佳答案

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

我使用以下代码:

在标题中添加一个新操作:

  QShortcut &m_Paste1;

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

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

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

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

关于c++ - 将剪切、复制、粘贴快捷方式更改为 Qt 5 中的自定义插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715948/

相关文章:

c++ - 获取指定格式的数字时区

c++ - 用boost序列化一个有内嵌类的类,但是只序列化wrapper中的信息

c++ - 尝试在 Qt 中获取自定义窗口框架时出现 LNK2019 问题

qt - QDockWidget 停靠在主窗口右侧时尺寸错误

c++ - 我可以在 'setDefaultButton' 中使用我自己的用户定义字符串吗

c++ - 如何使表格的列可编辑?

qt - 替换 console.debug() 的日志记录后端 console.warn()

java - 安卓NDK : Calling Java functions from C++

c++ - 从用户代码注入(inject)默认模板参数类型

c++ - 如何正确地对 [模板化] C++ 程序进行基准测试