QLineEdit
-
Buenas tardes, hace poco empece un proyecto en qt (que no he usado nunca), y estoy un poco pez aun. Problema:
Tengo un formulario que un monton de QlineEdit al los cuales cuando hay modificaciones los conecto a un slot para sabes que hay cambios de esta manera:foreach(QLineEdit* le, this->findChildren<QLineEdit*>()) { connect(le, SIGNAL(textChanged(const QString &)), this, SLOT(CambiosEnFichaCliente(const QString &))); }
Pero yo quiero que el QlineEdit, que haya sido modificado, quede cambiado de color de fondo para que quede resaldo. He mirado la documentacion pero QLineEdit no tiene ninguna señal que envie al slot el propio objeto ... o no he sabido verlo :( Se que podría crear mi propio qlineedit y tal .. programando la señal y eso ... pero aun no me veo con conocimientos de qt ... para meterme en ese lio. y quiero que mi función CambiosEnFichaCliente() reciba el objeto (el QLineEdit) modificado para poder cambiarle el color de fondo. Se que se puede hacer campo por campo ... pero... son muchos ....
Muchas gracias a toda la comunidad -
Hola,
Puedes hacer esto:
Dentro del SLOT "CambiosEnFichaCliente" haces lo siguiente:
//Primero tienes que cambiar el color de fondo de todos los QLineEdit. //Luego puedes cambiar el color de fondo del QLineEdit que ha emitido el SIGNAL: QObject *object = sender(); QLineEdit *lineEdit = static_cast<QLineEdit*>(object); if (lineEdit) //Código para cambiar el color de fondo
-
Hola,
QObject *object() = sender(); if (object != 0) ...
Falta esta verificación ya que muchas veces reutilizamos un método que puede ser llamado desde un SIGNAL y también directamente des de código. En caso de llamarlo desde código, el puntero object valdrá 0 (NULL).