es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

wxFormBuilder no agrega validadores en TextCtrl al código.

Estoy tratando de crear una aplicación usando wxwidgets. Creé un poco de GUI usando wxformbuilder y ahora quiero que uno de mis textctrl utilice un validador numérico. Lo configuré en wxformbuilder de esta manera:

Configuración del validador en wxformbuilder

Entonces hice validator_type como wxTextValidator, marcando validator_style: wxFILTER_NUMERIC y desmarcando wxFILTER_NONE. Y establecí validator_data_type como wxString.

Pero parece que no hay código relacionado con los validadores en los archivos generados. Aquí está todo el código que funciona con ese textctrl:

m_textCtrl5 = new wxTextCtrl( m_panel9, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT );
fgSizer9->Add( m_textCtrl5, 0, wxALL|wxEXPAND, 5 );

Intenté hacerlo antes y tuve el mismo problema. Generé una clase heredada y lo hice funcionar simplemente escribiendo ese código del validador yo mismo, pero no quiero hacer lo mismo ahora.

¿Estoy haciendo algo mal o simplemente esto no funciona?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en wxWidgets y wxFormBuilder, es importante destacar que wxFormBuilder no genera código para validadores de forma predeterminada. Por lo tanto, si deseas utilizar un validador con tu textctrl, deberás escribir el código tú mismo.

    Para hacer esto, deberás crear un objeto wxTextValidator con el estilo de validación que deseas (en este caso wxFILTER_NUMERIC) y luego asociarlo a tu textctrl utilizando el método SetValidator().

    Aquí tienes un ejemplo de cómo podrías modificar el código generado por wxFormBuilder para agregar un validador numérico a tu textctrl:

    “`c++
    m_textCtrl5 = new wxTextCtrl( m_panel9, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT );

    // Crea un wxTextValidator con el estilo wxFILTER_NUMERIC
    wxTextValidator validator(wxFILTER_NUMERIC);

    // Asocia el validador con el textctrl
    m_textCtrl5->SetValidator(validator);

    fgSizer9->Add( m_textCtrl5, 0, wxALL|wxEXPAND, 5 );
    “`

    Al agregar estas pocas líneas de código, ahora deberías tener un textctrl con un validador numérico adjunto a él.

Comments are closed.