[Kde-devel-es] QSpinBox con valores en coma flotante y el Validador
Raúl
raul at escomposlinux.org
Sun Jun 27 17:45:51 CEST 2004
Estoy intentado generar mi propio QSpinBox para poder tener valores en
coma flotante. He pasado por varias versiones y en todas me funciona
ese asunto, pero el validador no hay forma de hacerlo funcionar.
Si pongo un validador del tipo QIntValidator, funciona, pero claro, no
puedo escribir "123.345". Si pongo un QDoubleValidator la sensacion
que da es que este no esta funcionado
El ultimo codigo que estoy probando esta sacado directamente de:
http://webcvs.kde.org/cgi-bin/cvsweb.cgi/kdegraphics/kview/modules/scale/
, archivos kfloatspinbox.[cpp|h], ligeramente adaptados para
no depender de KDE.
Tras crear el widget hago mySpinBox1->setRange(-180.0,180.0,1,4); para
fijar el valor minimo a -180.0, el maximo a 180, con incrementos de 1
en 1 y 4 decimales.
void MySpinBox::setRange( float minValue, float maxValue, float step,
unsigned int precision )
{
m_factor = (int)pow( 10.0, (double)precision );
m_min = (int)( minValue * m_factor );
m_max = (int)( maxValue * m_factor );
m_step = (int)( step * m_factor);
QSpinBox::setRange( m_min, m_max);
setSteps( m_step, m_step * 10 * );
if( precision == 0)
setValidator( new QIntValidator(m_min, m_max, this));
else
setValidator( new QDoubleValidator(minValue, maxValue, true,this));
}
El rango si esta funcionado, por que no puedo pasar de 180, y el
incremento tambien funciona, pero el validado de datos no se comporta
como esperas.
Se supone que si escribes en el widget 19 y acto seguido intentas
poner otro valor, al estar fuera de rango, no deberia dejarte, pero
curiosamente si puedo. Puedo poner cualquier valor, eso si, al perder
el foco, el widget se pone a su valor maximo de 180.
--
Miembro del grupo LILO: http://lilo.uah.es
Debian Sarge. 2.6.7
raul at escomposlinux . org
GPG ID: 0xDBA0989C
Fingerprint: FEE5 E4EB 7418 8268 8373 C692 F9AA 940D DBA0 989C
More information about the Kde-devel-es
mailing list