Виджет Latitude/Longitude Qt4?

Какова лучшая начальная точка для виджета Qt4 для ввода Широты/Долготы в формате DD:MM:SS (градусы, минуты, секунды)? Настроить QLineEdit? Серия полей счетчика?

6
задан Dave 24 March 2010 в 20:56
поделиться

2 ответа

Есть несколько вариантов:

QLineEdit с Validator - нам было недостаточно, мы не смогли добиться удобного редактирования и правильного просмотра (с ',' и градусы на месте и возможность запрещать неправильные значения и по-прежнему допускать полуправильные состояния, и целевое поведение состоит не в том, чтобы отмечать ошибки и заставлять пользователя их исправлять, а в том, чтобы позволить пользователю вводить только допустимые значения).

Три изменения вращения в строке с соответствующими символами между ними, сгруппированными как один виджет, и некоторый код для перемещения ввода с клавиатуры с одного элемента на другой, когда это необходимо и т. Д. В некоторых случаях выглядит достаточно хорошо, и вы можете найти вариант реализации в известном проекте Marble.

Тем не менее, мой босс сказал, что этот подход почти такой же уродливый, как и первый, поэтому вот еще один подход: подкласс QAbstractSpinBox, как это сделал Trolltech в своем QDateTimeEditor. Фактически, поведение такого виджета практически аналогично тому, что реализовано в QDateTimeEditor. Я сам еще не делал этого из-за приоритетов задач, но придется это сделать.

6
ответ дан 16 December 2019 в 21:37
поделиться

Я бы использовал QValidator , прикрепив его к QLineEdit с помощью QLineEdit :: setValidator ( ) .

Вам необходимо создать подкласс, чтобы вы могли реализовать функцию validate () и, возможно, функцию fixup () для вашего конкретного случая, поскольку два валидатора включены только в Qt покрывают целые и двойные числа.

На мой взгляд, немного удобнее предоставить для этого одно поле ввода, чем три отдельных окна счетчиков (которые могут выглядеть загроможденными и не так приятно вводить).

[Edit: Еще одна альтернатива - установить « маску ввода проверки » в вашем QLineEdit, используя QLineEdit :: setInputMask () . Например, вам может потребоваться редактирование строки с уже имеющимися символами и заполнителями для других символов, и этот подход даст вам нечто подобное. В приложении QtDemo есть пример этого, который вы можете проверить, выбрав Widgets-> Line Edits (Виджеты находятся на второй странице).]

2
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: