2016-10-14 10 views
1

Я пишу инструмент, который имеет большой пользовательский виджет текстовой области и множество других виджетов ввода текста и т. Д. В настоящее время я работаю с добавлением копий/инструмент и зациклился на том, как это сделать на глобальном уровне, то есть я не хочу реализовывать копирование/вставку локально в каждом виджетах, который ему нужен. Для стандартных виджетов Qt он просто работает, чтобы использовать copy/paste с помощью Ctrl + C/Ctrl + V, но, конечно, я должен реализовать его вручную для своих пользовательских виджетов.PyQt: Глобальные действия копирования/вставки для пользовательских виджетов

Но как насчет действий копирования/вставки в строке меню? Должен ли я подключать их ко всем виджетам, которые существуют в моей программе, или есть ли какие-нибудь усовершенствованные способы сделать это? Я бы предпочел, если бы я мог просто подключить действия меню к некоторому глобальному обработчику copy/paste, который автоматически уведомляет виджет в фокусе.

+1

Зачем вам нужно повторно копировать/вставлять? Конечно, ваши пользовательские виджеты - это просто подклассы виджетов ввода текста Qt. – ekhumoro

+0

Нет, к сожалению, мой виджет является расширенным QAbstractScrollArea по соображениям производительности. Я сам представляю содержимое, чтобы иметь возможность просматривать чрезвычайно большие объемы данных. Насколько мне известно, этот компонент не поддерживает копирование/вставку. – UglyBob

ответ

0

Нет универсальной функции копирования/вставки - для пользовательских виджетов вам придется все реализовать самостоятельно. Класс QClipboard обеспечивает доступ к системному буферу. Каждое приложение имеет один объект буфера обмена, к которому можно получить доступ через QApplication.clipboard() или qApp.clipboard().

Стандартные виджеты ввода Qt определяют их собственные copy() и paste() слоты, которые могут быть подключены к действиям меню, кнопкам панели инструментов, сочетания клавиш и т. Д. Таким образом, ваши пользовательские виджеты должны, вероятно, определять один и тот же интерфейс.

Есть классы, такие как QActionGroup, QButtonGroup и QSignalMapper, которые обеспечивают поддержку централизованной обработки сигналов, но часто гораздо проще придерживаться четких, связей один-к-одному.

Смежные вопросы