컨텍스트 메뉴 안에 여러 가지 작업을 만들었습니다. 이제 작은 도구 모음에 동일한 작업을 추가하고 싶습니다. 문제는 도구 모음이 도킹 영역 중 하나가 아닌 인 VerticalLayout (다른 위젯 아래)에 위치해야한다는 것입니다. 도구 모음을 사용자 지정 위치로 이동하거나 다른 컨테이너 안에 작업을 배치 할 수 있습니까?내 창 어디에나 작업 배치
0
A
답변
0
QActions
은 메뉴와 도구 모음에만 추가됩니다.
내가 바로 거기에있는 경우 QActions
을 일반 위젯에 배치하고 싶습니다. 맞습니까?
해결 방법은 자신의 QPushButton
클래스를 구현하는 것입니다. 이 클래스에 다음을 수행하는 addAction 메소드를 제공하십시오. 단추의 멤버로 QAction
을 추가하고 QAction의 텍스트를 단추의 레이블로 설정하고 단추의 clicked()
신호를 작업의 trigger()
슬롯에 연결합니다. 이 같은
뭔가 :
void my_button::addAction(QAction* p_action)
{
if(pAction != NULL)
{
m_linked_action = p_action;
setText(m_linked_action->text());
connect(this,SIGNAL(clicked()),m_linked_action,SLOT(trigger()));
}
else
{
assert(false);
}
}
이 단지 매우 거친 예입니다. 액션을 제거 할 때 시그널의 적절한 연결 해제와 같은 많은 것들을 고려해야합니다. 당신은 또한 확인 가능한 행동과 그 물건들에 대한 특별한 대우를 알고 있어야합니다 (푸시 버튼은 체크 가능해야하고 신호는 연결되어야합니다 ...). 그러나 이것이 시작하는 좋은 방법이라고 생각합니다.
대안 : 당신은 또한 연결, 당신의 버튼의 mouseReleaseEvent
을 다시 구현 대신 할 거기 QAction::trigger()
부를 수있는 무엇
. 이와 같이하면 :
void my_button::mouseReleaseEvent(QMouseEvent* e)
{
if(e->button() == Qt::LeftButton)
{
if(m_linked_action != NULL)
{
m_linked_action->trigger();
}
}
QPushButton::mouseReleaseEvent(e);
}
이와 같이하면 버튼을 아무 곳에 나 배치 할 수 있으며 버튼을 클릭 할 때 연결된 동작이 트리거됩니다.
관련 문제
- 1. 모달 창 배치 도움말!
- 2. 작업 완료시 배치 작업 제출
- 3. Qt 하위 창 배치
- 4. 시스템 트레이 가까이 창 배치
- 5. 배치 작업 트랜잭션
- 6. 배치 - 롤백 작업
- 7. 작업 표시 줄 - 작업 항목 배치
- 8. NSPoint 및 IMKCandidate 창 배치
- 9. Gtk2-Perl의 창 작업
- 10. JQuery를 사용한 창 작업?
- 11. Java에서 창 작업 알림
- 12. Windows 로그인 창 앞에 배치 스크립트 시작
- 13. 작업 내 샐러리 작업
- 14. 배치 파일 - 작업 목록 - FindStr
- 15. 작업 영역에 텍스트 필드 배치
- 16. 세 가지 작업 배치 파일
- 17. 코코아/ObjC : 모달 창 위에 떠 다니는 창 배치
- 18. 사용자 지정 작업 창 도킹
- 19. 그놈 쉘 확장. 창 작업
- 20. 그룹 내 이미지 배치
- 21. 내 배치 스크립트라는 오류가
- 22. 창 중앙에 div 또는 대화 상자 배치
- 23. 창 배치 파일 : 단어가있는 단어 찾기
- 24. 플래시 비디오 상단에 요소 배치 : 창
- 25. Windows Forms의 창 하단에 StatusStrip 배치
- 26. Eclipse에서 커서를 창 중앙에 배치 하시겠습니까?
- 27. 배치 스크립트 내에서 새 CMD 창 열기
- 28. 배치 파일 및 창 스케줄러의 간단한 예제
- 29. 내가 창 내 NSTextField있는이
- 30. 작업 표시 줄에 대한 창 크기 관리