我正在编写一个具有大型自定义文本区域窗口小部件和许多其他文本输入窗口小部件等的工具。我目前正在处理向我的工具添加复制/粘贴并陷入困境在全球范围内这样做 - 即我不想在每个需要它的小部件中本地实现复制/粘贴。对于Qt标准小部件,它只是使用Ctrl + C / Ctrl + V进行复制/粘贴,但当然我必须手动为我的自定义小部件实现它。
但是菜单栏中的复制/粘贴操作呢?我是否必须将它们连接到我的程序中存在的每个小部件,或者是否有更好的内置方式来执行此操作?我更愿意,如果我可以将菜单操作连接到一些全局复制/粘贴处理程序,该处理程序会自动通知窗口小部件。
答案 0 :(得分:0)
没有通用的复制/粘贴功能 - 对于自定义小部件,您必须自己实现所有功能。 QClipboard类提供对系统剪贴板的访问。每个应用程序都有一个剪贴板对象,可以通过QApplication.clipboard()
或qApp.clipboard()
访问。
标准的Qt输入小部件都定义了自己的copy()
和paste()
个插槽,可以连接到菜单操作,工具栏按钮,键盘快捷键等。因此,您的自定义小部件应该定义相同的界面
有QActionGroup,QButtonGroup和QSignalMapper这样的类可以为集中式信号处理提供支持,但是坚持使用明确的一对一操作通常要简单得多连接。