2010-03-24 4 views
6

DD : MM : SS 형식 (위도, 분, 초)으로 위도/경도를 입력하기위한 Qt4 위젯의 가장 좋은 시작점은 무엇입니까? QLineEdit을 사용자 정의 하시겠습니까? 일련의 스핀 박스?위도/경도 Qt4 위젯?

답변

6

몇 가지 변종이 있습니다 검사기와

QLineEdit - 얻지 못한. 우리에게는 충분히 유용한 편집 및 적절한보기 (','및도 기호 사용, 잘못된 값 금지 및 준 수정 상태 허용 가능)를 달성 할 수 없었으며 대상 동작은 표시하지 않았습니다. 오류를 표시하고 사용자가 오류를 수정하도록 강요하지만 사용자가 유효한 값만 입력하도록 허용).

하나의 위젯으로 그룹화 된 적절한 기호가있는 라인에서 3 회의 스핀 편집이 필요할 때 키보드 입력을 다음에서 건너 뛰기위한 코드 몇 가지 경우에 충분히 잘 보이고 다음과 같은 변형을 찾을 수 있습니다. 유명한 대리석 프로젝트에서 실현. 서브 클래스 QAbstractSpinBox, 트롤 테크가 QDateTimeEditor에서와 같이

아직도, 내 상사는이 방법은, 그래서 여기에 처음으로 거의 추한 또 다른 방법이라고 말했다. 사실 위젯의 동작은 QDateTimeEditor에 구현 된 것과 비슷합니다. 나 자신도 아직 업무를 수행하지 않았지만 업무 우선 순위 때문에 발생하지만해야 할 것입니다.

+1

QLineEdit의 입력 마스크 지원을 보았습니까? 나는 그 대안으로 내 대답을 업데이트했습니다. – richardwb

+0

네,이 변종을 시도해 볼 수도 있습니다. 여기에있는 문제는 입력 마스크가 위젯에 알려주며 몇몇 기호가 일부 위치에서 적절하다는 것입니다. 우리의 경우에는 그렇지 않습니다. 아마도 유효성 검사기와 입력의 혼합이있을 수 있습니다. 마스킹 로직은 학위와 분/초 마크를 적절한 위치에 그리고 적절한 +/-/숫자 위치와 범위 문제를 처리합니다. 말하자면, 다른 좌표 형식 (d.m.s, d.m, m은 십진수 및 거리 (미터))을 처리 할 제어가 필요합니다. –

2

나는 QLineEdit::setValidator()을 사용하여 QLineEdit에 연결하여 QValidator을 사용합니다.

Qt에 포함 된 2 개의 유효성 검사기는 정수와 복식 만 포함하므로 validate() 함수와 fixup() 함수를 구현할 수 있도록 서브 클래스를 만들어야합니다.

내 의견으로는 3 개의 분리 된 스핀 박스가 아닌 하나의 입력 상자를 제공하는 것이 다소 우스꽝 스럽습니다. (어수선 해 보이고 입력하기도 좋지 않습니다.)

[편집 : 다른 대안은 QLineEdit::setInputMask()을 사용하여 QLineEdit에 "validation input mask"을 설정하는 것입니다. 이미 기호가있는 줄 편집 및 다른 문자의 자리 표시자를 원할 수도 있습니다.이 방법을 사용하면 비슷한 것을 얻을 수 있습니다. QtDemo의 응용 프로그램은 당신이 선택하여 확인할 수 있습니다이의 예를 가지고 Widgets-> 라인 편집 (위젯은 두 번째 페이지에)]