¿Cuál es el mejor punto de partida para un widget Qt4 para ingresar latitud/longitud en formato DD: MM: SS (grados, minutos, segundos)? Personaliza un QLineEdit? Una serie de cajas giratorias?Widget Latitud/Longitud Qt4?
Respuesta
Existen algunas variantes:
QLineEdit con Validador - WASN. 'Lo suficientemente bueno para nosotros, no podríamos lograr una edición utilizable y una vista adecuada (con los símbolos', '' y grados en su lugar y la capacidad de prohibir valores incorrectos y aún permitir estados semi-correctos, y el comportamiento objetivo no es marcar errores y obliga al usuario a corregirlos, pero para permitir que el usuario ingrese solo valores válidos).
Tres vueltas de edición en una línea con los símbolos apropiados entre ellas agrupadas como un único widget y algún código para mover la entrada del teclado de uno no siguiente cuando sea necesario etc. Se ve lo suficientemente bueno en algunos casos, y puede encontrar la variante de realización en el famoso proyecto de mármol.
Aún así, mi jefe dijo que este enfoque es casi tan feo como el primero, así que aquí hay otro enfoque: la subclase QAbstractSpinBox, como lo hizo Trolltech en su QDateTimeEditor. De hecho, el comportamiento de dicho widget es casi similar a uno, implementado en QDateTimeEditor. Yo, yo mismo no lo hice todavía, debido a las prioridades de tareas, pero tendrá que hacer.
Yo usaría un QValidator
, adjuntándolo a un QLineEdit
usando QLineEdit::setValidator()
.
Necesitará una subclase para que pueda implementar la función validate()
y posiblemente la función fixup()
para su caso particular, ya que los dos validadores incluidos con Qt solo cubren números enteros y dobles.
Es un poco más amigable, en mi opinión, proporcionar un cuadro de entrada único para esto en lugar de tres cuadros de giro separados (que pueden parecer desordenados y no es tan bueno escribir).
[Editar: Otra alternativa es establecer un "validation input mask" en su QLineEdit usando QLineEdit::setInputMask()
. Es posible que desee una edición de línea con símbolos que ya están en su lugar y marcadores de posición para otros caracteres, por ejemplo, y este enfoque le dará algo similar a eso. La aplicación QtDemo tiene un ejemplo de esto que se puede comprobar a cabo por la elección de Widgets-> edición de líneas (Reproductores está en la segunda página)]
- 1. Qt4: ajustar qué widget enfocarse al inicio
- 2. Qt4 ¿Cómo dibujar dentro de un widget?
- 3. destructores en Qt4
- 4. QT4 Memory Management
- 5. ¿Dónde puedo encontrar el widget del editor de código fuente Qt4?
- 6. Qt4 lengüetas de expansión en QTabBar
- 7. cmake no encuentra Qt4
- 8. Elemento Qt4 QMenu ordenando
- 9. QT4 QstringListModel en QListView
- 10. BitBlt en Qt4?
- 11. Codificación URL en Qt4
- 12. usando Poppler Qt4 C++
- 13. Consola/Terminal Widget para Qt?
- 14. Qt4: Escala invariable qgraphicsitem contornea
- 15. ¿Hay QPath :: Combine en QT4?
- 16. ¿Qué QWidget * QApplication :: mainWidget() se convirtió en Qt4?
- 17. QT4 Ventana de arrastre sin barra de título
- 18. QT4 ¿Cómo desenfocar la imagen de QPixmap?
- 19. Analizador de línea de comandos para Qt4
- 20. ¿Cuán diferente es Qt4 de Qt3?
- 21. Ejecutar comandos de Linux desde Qt4
- 22. Qt Designer no carga mi plugin de widget personalizado
- 23. Widget Security
- 24. ¿Dónde se guardan las preferencias de Widget Widget?
- 25. Cómo Widget dentro de otro widget en QT?
- 26. Acceso a instancia del widget de widget de fuera
- 27. ¿Cómo creo una ranura personalizada en el diseñador qt4?
- 28. forma portátil de "tenedor()" en la aplicación Qt4?
- 29. Qt4: eventos del botón del mouse de QTableView no detectados
- 30. Capturar imagen de escritorio de pantallas múltiples usando Qt4
¿Ha mirado el soporte de máscara de entrada de QLineEdit? He actualizado mi respuesta con esa alternativa también. – richardwb
Sí, probaría esta variante también, el problema aquí es el hecho de que la máscara de entrada le dice al widget, que algunos símbolos son adecuados en algunas posiciones, eso no es cierto en nuestro caso: tal vez haya alguna combinación de validador y entrada lógica de máscara, que dibujará el grado y la marca de minuto/segundo en el lugar apropiado y manejará las posiciones +/-/dígitos correctas y los problemas de alcance. Más que decir, necesito control, que manejará diferentes formatos de coordenadas (d.m.s, d.m, donde m es decimal y distancias en metros) –