Tengo una entrada de consola en mi aplicación Qt
, es un QLineEdit
, todo Ui está diseñado a través de QtDesigner
. ¿Hay alguna manera fácil de manejar las flechas hacia arriba y hacia abajo para implementar el historial de entrada? El 'ir a la ranura' sólo mostrar returnProcessed
señal, no hay manera que puedo ver para manejar flechas arriba y abajo :(QLineEdit: cómo manejar las flechas arriba y abajo?
Respuesta
que pueda install event filter y ver tu edición evento línea en su clase de ventana a continuación se muestra un ejemplo:.
método de control de eventos de declarar en su clase de ventana:
class MainWindow : public QMainWindow {
Q_OBJECT
...
protected:
void changeEvent(QEvent *e);
...
};
ventana constructor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
}
aplicación de controlador de eventos:
bool MainWindow::eventFilter(QObject* obj, QEvent *event)
{
if (obj == ui->lineEdit)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Up)
{
qDebug() << "lineEdit -> Qt::Key_Up";
return true;
}
else if(keyEvent->key() == Qt::Key_Down)
{
qDebug() << "lineEdit -> Qt::Key_Down";
return true;
}
}
return false;
}
return QMainWindow::eventFilter(obj, event);
}
esperanza que esta ayuda, que se refiere a
Usted puede subclase QLineEdit y volver a poner en práctica el método keyPressEvent virtual para manejar sus teclas especiales.
void MyLineEdit::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Up){
// move back in history
}
else if(event->key() == Qt::Key_Down){
// move forward in history
}
else{
// default handler for event
QLineEdit::keyPressEvent(event);
}
}
Es una buena idea. Pero, ¿cómo combinar la subclasificación QLineEdit con el Ui generado por QtDesigner? – grigoryvp
Ver: http://doc.trolltech.com/4.6/designer-creating-custom-widgets.html –
Por lo tanto, para poder desarrollar las flechas del anuncio, necesito implementar un complemento completo de QtDesigner con toneladas de funciones que definen cómo usar un widget "nuevo"? :( – grigoryvp
que tenía el mismo problema, pero encuentro a cabo en otros foros que necesita setFocus
, por ejemplo:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
this->setFocus();
}
Funciona para mí.
Referencia: http://www.qtforum.org/article/28240/how-to-get-arrow-keys.html
- 1. Flechas arriba y abajo del teclado
- 2. ¿Diseño de arriba hacia abajo o de abajo hacia arriba?
- 3. Usando TDD: "arriba hacia abajo" vs. "abajo hacia arriba"
- 4. arriba() y abajo() versus Ext.getCmp()
- 5. UITableView Shadows arriba y abajo
- 6. WPF - Crear botones con flechas hacia arriba y hacia abajo usando los botones estándar
- 7. ¿Cómo implementar un historial de comandos en un cliente telnet? (flechas arriba/abajo)
- 8. detectando dedo arriba/abajo UITapGestureRecognizer
- 9. Gramática: ¿diferencia entre arriba hacia abajo y hacia abajo? (Ejemplo)
- 10. Voltear UIViews desde arriba/abajo
- 11. ¿Arriba y abajo numéricos en HTML?
- 12. Cómo alternar entre las flechas desplegables
- 13. Diseño y codificación: de arriba a abajo o de abajo hacia arriba?
- 14. ¿Cómo manejar el botón "Arriba"?
- 15. Cómo mover div de abajo a arriba
- 16. Problema de diseño: ¿cómo colocar algo arriba y abajo?
- 17. jqGrid - Navegar filas usando las teclas de flecha arriba/abajo?
- 18. jQuery Masonry de abajo hacia arriba
- 19. Código C#: primera migración, arriba/abajo?
- 20. jQuery Sortable Move Botón ARRIBA/ABAJO
- 21. Guión de votación de arriba/abajo
- 22. Plataforma azul: instancias de escala arriba y abajo
- 23. Gridview ordenando flecha arriba/abajo en los encabezados de las columnas
- 24. Relleno (izquierda, arriba, derecha, abajo) en WPF
- 25. Redondeo eficiente de BigDecimal Arriba y abajo a dos decimales
- 26. ¿Diferenciar entre desplazamiento arriba/abajo en jquery?
- 27. En Visio, ¿cómo obtengo las flechas de aspecto normal? (Las flechas de línea no las triángulo)
- 28. ¿Cómo leer un archivo de abajo hacia arriba en Ruby?
- 29. cómo animar ventana emergente de abajo hacia arriba en Android
- 30. cómo atrapar la interrupción de NIC (arriba/abajo)?
Una forma de simplificar aún más sería agregar el filtro de eventos al QLineEdit en sí mismo. Entonces no tendría que preocuparse por el argumento obj, más , puedes aplicarlo a varios QLineEdits (dado que usas obj cuando reaccionas al evento) – e8johan
Gracias, funciona como un encanto :) – grigoryvp