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