2011-01-28 2 views
1

Qt를 사용하여 구조화 된 문서 편집기를 만들고 싶습니다. v1의 기본 개념은 중첩 된 섹션으로, 각 섹션에는 제목과 하나 이상의 단락이 있습니다. 섹션과 단락은 별개의 시각 단위입니다 (아마도 배경 음영을 통해). 또한 문자 수준의 의미를 저장할 수 있어야합니다 (예 :이 텍스트 행은 참조 X와 연결됨). 이것에 대한 읽기 전용 뷰를 만들고 싶다면 QFrame을 사용하여 섹션을 만들고 QLabel을 각 제목과 각 단락에 사용할 수 있습니다. 이것을 편집 가능하게 만들기 위해 모든 키보드 이벤트를 창에 캡쳐하고 커서가있는 텍스트 입력 및 편집 느낌을 구현할 수 있다고 확신합니다.Qt의 이벤트 붙여 넣기

내가 문제가되는 것은 복사/붙여 넣기를 처리하는 방법입니다.

클립 보드의 상호 작용을 원한다 : OST의 경우 Ctrl + C/v, OSX의 경우 Ctrl + C/V, X의 클립 보드의 경우 ctrl + c/v, X의 PRIMARY, 가운데에 클릭하여 X 등의 PRIMARY에 붙여 넣습니다.

Qt의 표준 텍스트 편집 컨트롤로이 모든 것을 잘 처리 할 수 ​​있습니다. 내 맞춤 위젯에서 같은 것을 구현하기 위해 잡을 수있는 일종의 '붙여 넣기 이벤트'또는 유사 항목이 있는지 궁금합니다. 다른 방법이 있습니까?

답변

1

QLineEdit과 같은 위젯에서 paste() 슬롯을 구현하는 방법을 몰래 들여다 보지 못하도록 막을 수는 없지만, 듣기에는 페이스트 신호/이벤트가 없습니다. 가능한 경우 직접 구현하십시오. 구 심성 신호는 신호가 아니므로 원할 때마다이를 유발할 수 있습니다 (예 : Ctrl + v, 컨텍스트 메뉴 또는 프로그램 메뉴).

LE : 내가 더 잘 생각한다면, 당신은 잘못된 생각을하고 신호를 필요로하지 않을 것입니다. 당신이 원하는 어떤 방법 으로든 동작이 호출 될 때마다 전화 할 수있는 슬롯이 필요합니다. Ctrl + V). 슬롯 (QClipboard)이 있으면 원하는 트리거링 동작/신호에 올바르게 연결해야합니다.

기본 키보드 단축키에 대한
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

관련 문제