Spatialite 데이터베이스에 입력 마스크를 공급하기위한 플러그인을 만들었습니다. 객체의 최소 / 최대 치수를 나타내는 두 개의 필드가 있습니다.
iface.actionMeasure().trigger()
두 개의 푸시 버튼 "측정"을 사용 하여 측정 도구 ( )를 호출하는 순간 치수를 클릭하고 키보드로 값을 필드 (QLineEdit)에 입력하십시오.
측정 도구를 사용하여 마우스 오른쪽 버튼을 클릭 한 후 (마무리 측정) 값이 필드 (최소 또는 최대, QLineEdit)에 자동으로 커밋 될 가능성이 있습니까?
- 통화 측정 도구 (작동)
- 왼쪽 클릭 : 측정 시작
- 4. 한 번에 : 마우스 오른쪽 버튼을 클릭하고 측정 도구의 총 값을 최소 필드 (QLineEdit)에 커밋합니다.
업데이트 1 :
이 질문을 한 후 어느 날 나는 측정 도구 (ST_Length (geom))로 사용할 수있는 선 스트링 레이어를 갖는 아이디어를 얻었습니다. 장점은 데이터를 조작하고 데이터를 얻는 것을 완전히 제어 할 수 있다는 것입니다. 단점은 프로젝트의 추가 계층입니다.
워크 플로우는 다음과 같습니다.
클릭 측정 : 편집 토글, "기능 추가"활성화
객체의 최소 치수를 나타내는 선 스트링 만들기
변경 사항 확인, 라인 스트링 길이 계산 (ST_Length (geom)), QLineEdit에 커밋 길이
대화 상자를 닫고 줄 문자열을 제거하십시오 (DELETE FROM)
그러나 내 실제 질문은 남아 있습니다. 측정 도구에서 직접 거리 값을 얻는 방법이 있습니까?
업데이트 2 :
Jakob의 도움으로 측정 도구를 닫을 때까지 QLineEdit을 측정 도구의 총 값으로 업데이트 할 수 있습니다 . 그런 다음 값은 '0,000 m'으로 설정됩니다. 나는 이것을 사용 하여이 문제를 해결했다.
def text_changed(str_measure):
if str_measure == '0,000 m':
pass
else:
self.min.setText(str_measure)
작동하지만 이것이 올바른 해결책인지는 모르겠습니다.