QtableWidget에게 셀 편집을 종료하도록 어떻게 말할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/518447

  •  21-08-2019
  •  | 
  •  

문제

QtableWidget에서 일부 값을 선택할 팝업 메뉴가 표시됩니다. 가장 낮은 항목은 "목록 수정"항목입니다. 선택하면 새 창이 자동으로 나타나고 QcomboBox가 사라지고 셀이 QT :: DisplayRole 상태로 돌아와야합니다.

이제 QT에는 멋진 API 통화가 모두 있습니다 QTableWidget.edit() 그리고 QTableWidget.editItem(), 내가 정말로 찾고있는 것은 QTableWidget.endEditing(), 바람직하게는 셀의 색인을 지정하지 않고이 호출을 사용하여 얻을 수 있습니다.

table.currentIndex()

… 그러나 현재 셀이 항상 편집되는 셀인지 보장 할 수 있는지 모르겠습니다.

이러한 편집자를 닫을 API가 있습니까?

Popup menu

도움이 되었습니까?

해결책

qtablewidget QWIDGET에서 19 개의 공개 슬롯을 상속합니다. 그 중 하나는 setDisabled ()이며 해당 위젯과 모든 어린이의 입력 이벤트를 비활성화해야합니다.

나는 시도 할 것이다 :

table.setDisabled( true );
table.setDisabled( false );

당신이 당신에게 효과가 없다고 말했지만 대안 방법이 있습니다. 당신이 그것을 좋아하지 않는다면 (테이블이 초점을 잃고, 믿습니다), 당신은 사용해 볼 수 있습니다. 편집기. 예를 들어:

table.setEditTriggers( QAbstractItemView::NoEditTriggers );

다른 팁

table.setCurrentItem(None) 나를 위해 일한 것입니다. (CellChanged/ItemChanged 슬롯 기능을 사용하는 경우 신호를 차단하는 것을 잊지 마십시오.)

이것은 pyqt와 함께합니다. C ++의 경우 NULL로 교체하지 않는다고 생각합니다.

qtablewidget.closepersistenteditor ()를 사용하여 편집기를 닫을 수 있습니다. 그러나 qabstractitemview.closeeditor ()는 특히 QModelIndex 기반 API에 익숙해 보이고 이미 사용자 정의 편집기 위젯을 사용하고 있기 때문에 원하는 것에 더 가까울 수 있습니다.

목록 위젯에 대해서는 말할 수 없습니다. 그러나 나는 여기에 비슷한 일을하려고 노력했다.

셀을 두 번 클릭하고 열을 기준으로 목록과 하위 형식을 가져오고 선택한 값을 기준으로 다음 적절한 열로 이동했을 때.

내 문제는 셀에서 값을 얻을 수 있고 다음 적절한 셀을 "선택"할 수 있었지만 원래 셀은 편집 모드로 선택되었습니다!

마침내 두 번 클릭이 셀을 선택하는 것이 마침내 나에게 시작되었습니다. 편집.

단일 클릭은 셀을 선택하지만 편집 모드를 열지 않습니다.

참고 사항 : 해당 하위 형식을 Act Truity Modal을 얻지 못할 수 없으므로 호출 양식에서 루프를 만들었습니다. 하위 양식이 보이지만 유일한 코드는 app.processevents ()입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top