在Qt中粘贴事件

问题描述 投票:1回答:2

我想用Qt构建一个结构化的文档编辑器。 v1的基本概念是嵌套部分,每个部分都有一个标题和一个或多个段落。部分和段落是不同的视觉单元(可能通过背景阴影)。我还需要能够存储字符级语义(即:这一行文本与引用X相关联)。如果我想构建一个只读的视图,那么对于各个部分的QFrame和每个标题和每个段落的QLabel都是可行的。为了使这个可编辑我很确定我可以捕获所有键盘事件到窗口并实现一个光标的文本输入和编辑的感觉。

我遇到的问题是如何处理复制/粘贴。

我希望剪贴板交互感觉原生:即窗口上的ctrl + c / v,OSX上的命令+ c / v,X上的剪贴板的ctrl + c / v,选择复制为X上的PRIMARY,中间点击粘贴对于X等的PRIMARY

Qt中的标准文本编辑控件处理所有这些都很好。我想知道是否有某种“粘贴事件”或类似的东西,我可以抓住在我的自定义小部件中实现相同的东西?还有另外一种方法吗?

qt qt4 clipboard
2个回答
1
投票

对于本机键盘快捷键,您可以将它们添加到菜单项:

ui->actionCut->setShortcut(QKeySequence::Cut);
ui->actionCopy->setShortcut(QKeySequence::Copy);
ui->actionInsert_empty_row->setShortcut(Qt::Key_Insert);
ui->actionPaste->setShortcut(QKeySequence::Paste);
ui->actionRemove->setShortcut(QKeySequence::Delete);

See QKeySequence docs


1
投票

据我所知,没有粘贴信号/事件可以听,但是没有什么能阻止你偷偷看看如何在像QLineEdit这样的小部件中实现paste()槽并尽可能实现你自己的。传入信号并不重要,因为它只是一个信号,您可以随时触发(例如Ctrl + v,上下文菜单或程序菜单)。

LE:如果我想的更好,你可能会认为这是错误的方式,你不需要信号,你只需要你可以通过任何你想要的方式调用动作时调用的插槽(例如ctrl + v) 。一旦你有了插槽(QClipboard),只需将它正确连接到所需的触发动作/信号即可。

© www.soinside.com 2019 - 2024. All rights reserved.