2016-10-14 4 views
1

큰 커스텀 텍스트 영역 위젯과 다른 많은 텍스트 입력 위젯을 가진 툴을 쓰고 있습니다. 현재 복사/붙여 넣기를 내 도구를 사용하고 글로벌 수준에서이 작업을 수행하는 방법에 대해 고민했습니다. 즉, 필요한 모든 위젯에 로컬로 복사/붙여 넣기를 구현하고 싶지 않습니다. Qt 표준 위젯의 경우 Ctrl + C/Ctrl + V로 복사/붙여 넣기를 사용하기 만하면되지만 사용자 정의 위젯을 수동으로 구현해야합니다.PyQt : 커스텀 위젯을위한 전역 복사/붙여 넣기 동작

메뉴 모음의 복사/붙여 넣기 동작은 어떻게됩니까? 내 프로그램에있는 모든 위젯에 이들을 연결해야합니까, 아니면이를 위해 더 잘 구축 된 프로그램이 있습니까? 자동으로 포커스를 위젯에 알리는 일부 전역 복사/붙여 넣기 처리기에 메뉴 작업을 연결할 수 있으면 더 좋을 것입니다.

+1

왜 복사/붙여 넣기를 다시 구현해야합니까? 분명히 사용자 정의 위젯은 Qt 텍스트 입력 위젯의 서브 클래스 일뿐입니다. – ekhumoro

+0

불행히도 내 위젯은 성능상의 이유로 확장 된 QAbstractScrollArea입니다. 매우 큰 데이터 양을 볼 수 있도록 내용을 직접 렌더링합니다. 그리고이 구성 요소는 내가 아는 한 복사/붙여 넣기를 지원하지 않습니다. – UglyBob

답변

0

일반 복사/붙여 넣기 기능은 없습니다. 맞춤 위젯의 경우 모든 것을 직접 구현해야합니다. QClipboard 클래스는 시스템 클립 보드에 대한 액세스를 제공합니다. 모든 응용 프로그램에는 단일 클립 보드 객체가 있으며 QApplication.clipboard() 또는 qApp.clipboard()을 통해 액세스 할 수 있습니다.

표준 Qt 입력 위젯은 모두 메뉴 조치, 툴바 버튼, 키보드 단축키 등에 연결할 수있는 copy()paste() 슬롯을 정의하므로 사용자 정의 위젯은 아마 동일한 인터페이스를 정의해야합니다.

클래스가 있습니다 같은 QActionGroup, QButtonGroup 및 중앙 집중식 신호 처리에 대한 지원을 제공하지만 종종 명시 적, 일대일 연결을 고수하는 것이 훨씬 간단 QSignalMapper있다.