QLineEdit y QTextEdit tutorial Qt
Ambos widgets QLineEdit
y QTextEdit
son utilizados para obtener un texto por parte del usuario, el primero solo permite una sola línea de texto, el segundo por el contrario maneja múltiples líneas de texto, ambos soportan la s características de copiar y pegar, arrastrar y soltar, y revertir cambios, entre otras cosas.
Uso del QLineEdit
Como lo mencionamos previamente este widget esta diseñado para manejar una única línea de texto, podemos indicar el texto que se muestra utilizando el primer parámetro del constructor o usando el método setText()
obtenemos el texto escrito usando text()
, podemos restringir la cantidad de caracteres admitidos con setMaxLength()
y podemos establecer el texto informativo con setPlaceHolder()
.
QLineEdit *txt = new QLineEdit();
txt->setPlaceholderText("Escribe algo...");
txt->setMaxLength(20);
QObject::connect(txt, &QLineEdit::textChanged, [=]() {
std::cout << "Text: " << txt->text().toStdString() << std::endl;
});
Este control emite el signal textChanged cada vez que se modifica el texto del mismo, el código que se encuentra al final muestra como conectarnos al respectivo signal usando un lambda, solo mostramos en consola el texto cada vez que este cambia.
Si usamos este widget para obtener una contraseña, sería prudente ocultar dicha información, esto lo haríamos con setEchoMode()
de esta manera:
txt->setEchoMode(QLineEdit::Password);
Para seleccionar el texto completo disponemos del método selectAll()
, el texto seleccionado lo podemos obtener con selectedText()
, otra opción es indicar los índices inicial y final de la selección, es decir donde comienza y termina la misma, para ello tenemos setSelection(int, int)
el primer parámetro, un entero, define el índice inicial el segundo el índice final.
Cuando el texto seleccionado cambia se emite el signal selectionChanged, lo conectamos con un lambda que obtiene el texto seleccionado y lo muestra en la consola de salida.
QObject::connect(txt, &QLineEdit::selectionChanged, [=]() {
std::cout << "Selection: " << txt->selectedText().toStdString() << std::endl;
});
Otros signal interesantes son QLineEdit::cursorPositionChanged
emitido cuando cambia la posición del cursor, la línea vertical que indica donde se inserta el texto, además QLineEdit::returnPressed
que es emitido cuando se presionan las teclas enter o intro, este widget tiene muchas otras características y funcionalidades puedes ver la documentación para más detalles.
Uso del QTextEdit
Este widget es más avanzado que el anterior, soporta múltiples líneas de texto que pueden ser texto plano o texto enriquecido formateado con HTML 4, usaremos el método setText()
para indicar un texto y setHtml()
para establecer un texto HTML, con esta última opción podemos agregar tablas o imágenes, y mucho más.
QTextEdit *txt = new QTextEdit();
txt->setHtml("<h1>Hello</h1> <p>Este es un ejemplo</p>");
QObject::connect(txt, &QTextEdit::textChanged, [=]() {
std::cout << "Text: " << txt->toHtml().toStdString() << std::endl;
});
Este widget también emite el signal textChanged como el anterior, para obtener el texto HTML usamos toHtml()
si deseamos el texto plano toPlainText()
.
El QTextEdit puede ser usado de manera avanzada para crear editores de texto complejos, puedes ver los ejemplos oficiales, para usarlo como un editor de texto plano: \Qt5.9.1\Examples\Qt-5.9.1\widgets\mainwindows\mainwindow
Como un editor y marcador de código C++, \Qt5.9.1\Examples\Qt-5.9.1\widgets\richtext\syntaxhighlighter
Como habrás notado el control es muy versátil y complejo, revisa los ejemplo para entender lo que puedes hacer con él y cómo puedes hacerlo, momento terminamos por hoy.
Comentarios
Publicar un comentario