QTableWidget의 내용과 동기화 된 배열 데이터를 유지하려고합니다. 끌어서 놓기 순서 변경 (테이블 내에서 항목을 이동하는 것과 반대 방향으로 복사)을 사용하고 싶지만 drop 이벤트가 발생하면 항목이 FROM에서 끌어온 인덱스를 찾을 수있는 방법이 명확하지 않습니다. 따라서 나는 동기화 대상 목록 내에서 이동할 개체를 알 수있는 방법이 없습니다. 드래그되는 항목의 원래 행 인덱스를 얻으려면 어떻게해야합니까?QTableWidget에서 행을 드래그 할 때 FROM 및 TO에서 어떤 행 인덱스를 드래그했는지 어떻게 알 수 있습니까?
2
A
답변
3
QMimeData에서 from 색인을 인코딩하고 setMimeData()를 사용하여 QDrag 객체에 저장합니다. 드롭 이벤트가 발생하면 mimeData()를 사용하여 QDropEvent에서 데이터를 추출하십시오.
0
QDropEvent
에는 드래그 드롭 이벤트를 시작한 위젯을 제공하는 source()
함수가 있습니다. 그런 다음 source
에서 qobject_cast<QTableWidget>
을 수행합니다. 포인터를 확인한 후 QTableWidget::findItems
으로 전화하여 항목 행을 가져옵니다.
그래서 이런 식으로 뭔가 :
void dropEvent (QDropEvent * event) {
if (event) {
QTableWidget* table = qobject_cast<QTableWidget*>(event->source());
if (table) {
QString item = ""// Decode MIME data here.
Qt::MatchFlag someFlag = Qt::MatchExactly; // Check documentation for match type.
QList<QTableWidgetItem *> items = table->findItems(item, someFlag)
// If you don't have repeats, items[0] is what you want.
int initialRow = table->row(items[0]);
}
}
}
나는이 조금 떨어져있을 수 있도록 모델/뷰 클래스를 사용하는 경향이 있지만, 그것을 작동합니다.
1
단계 1. QTableWidget :: mimeData 함수를 재정의하십시오. 기본 클래스 구현을 호출 한 다음 사용자 정의 MIME 유형을 QMimeData에 저장하고 리턴하십시오.
2 단계. QTableWidget :: dropEvent 함수를 재정의하십시오. MIME 데이터가 QMimeData에 있으면 드롭을 허용하고 데이터를 추출하십시오. QTableWidget :: indexAt를 사용하여 드롭이 들어간 행/열을 찾으십시오.
관련 문제
- 1. 어떤 행을 클릭했는지 어떻게 알 수 있습니까?
- 2. QTableWidget에서 어떻게 행을 선택할 수 있습니까?
- 3. QTableWidget에서 셀 편집을 끝내라는 것을 어떻게 알 수 있습니까?
- 4. foreach를 사용하여 반복 행 인덱스를 어떻게 알 수 있습니까?
- 5. 사용자가 어떤 TcxGrid 행을 드롭했는지 어떻게 알 수 있습니까?
- 6. 테이블에 어떤 유형의 잠금이 있는지 어떻게 알 수 있습니까?
- 7. 어떤 .emacs 파일이로드되었는지 어떻게 알 수 있습니까?
- 8. C++, QTableWidget에서 행 추가/제거
- 9. 어떤 것이 마운트 될 때 어떻게 알 수 있습니까?
- 10. , 어떤 페이지가 현재인지 어떻게 알 수 있습니까?
- 11. 어떤 파일이 상수인지 어떻게 알 수 있습니까?
- 12. 어떤 유형의 데이터베이스인지 어떻게 알 수 있습니까?
- 13. 어떤 기능이 호출되는지 어떻게 알 수 있습니까?
- 14. 어떤 헤더에서 어떤 기능이 사용되고 있는지 어떻게 알 수 있습니까?
- 15. 어떤 클래스에서 어떤 함수가 호출되었는지 어떻게 알 수 있습니까?
- 16. 어떻게 알 수 있습니까?
- 17. 이전에 선택 쿼리로 행을 쿼리했는지 어떻게 알 수 있습니까?
- 18. ExtJS - EditorGridPanel 행을 드래그 할 수 없습니까?
- 19. mysql : 어떤 쿼리가 어떤 인덱스를 종결시킬 수 있습니까?
- 20. Bundler는 어떤 환경을 사용해야하는지 어떻게 알 수 있습니까?
- 21. WPF에서 드래그/드롭이 취소되었는지 어떻게 알 수 있습니까?
- 22. jQuery의 테이블 행 드래그
- 23. gtk.table의 행을 어떻게 강조 할 수 있습니까?
- 24. 어떤 버튼을 클릭했는지 어떻게 알 수 있습니까? Objective C
- 25. 로그인했을 때 양식을 어떻게 알 수 있습니까?
- 26. C#을 디버깅 할 때 메모리에서 어떤 항목이 생성되는지 어떻게 알 수 있습니까?
- 27. 어떤 SMTP 서버가 사용되고 있는지 어떻게 알 수 있습니까?
- 28. 컴파일 할 때 환경 변수가 존재하는지 어떻게 알 수 있습니까?
- 29. 개체를 처리해야 할 때 어떻게 알 수 있습니까?
- 30. Netbeans에서 객체가 어떤 방법으로 알고 있는지 어떻게 알 수 있습니까?