Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Punteros en Qt

    (Puntos:1, FueraDeTema)
    por djworld (10393) el Martes, 31 Octubre de 2006, 12:52h (#836111)
    ( Última bitácora: Jueves, 31 Enero de 2013, 09:47h )
    En este tema, Qt brilla con luz propia, ya que cuando se programa con Qt no es necesario destruir los punteros a objetos que creemos, de ello se encarga Qt automáticamente. El mecanismo funciona así: todas las clases deben heredar de QObject. Con la interfaz no hay problema porque todos los widgets heredan de QWidget que a su vez hereda de QObject, y con nuestros objetos que no sean de la interfaz obtenemos más ventajas heredándolos de QObject, como poder usar señales y slots. A partir de ese momento, lo único que hay que hacer es pasarle el QObject padre en el constructor. Por ejemplo:

    class MiClase : public QObject {
    Q_OBJECT
    public:
    void MiClase(QObject *parent = 0);
    };

    MiClase::MiClase(QObject *parent)
    : QObject(parent) {
    // código propio del constructor
    }
    Y luego sólo tendríamos que crear el objeto, pero no es necesario destruirlo:
    MiClase *obj = new MiClase(this);

    El destructor de QObject se encargará automáticamente de destruir todos los objetos que sean sus hijos. De ese modo, no hay problemas con punteros que se queden por ahí perdidos. :)

    Además, con la interfaz gráfica si un widget se añade a un layout o a otro widget, automáticamente se asigna el padre, con lo cual nisiquiera hace falta el this:
    MiFormulario::MiFormulario(QWidget *parent)
    : QWidget(parent) {
    ...
    QPushButton *boton = new QPushButton;
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(boton);
    ...
    setLayout(layout);
    }
    --
    openSUSE [opensuse.org]
    Puntos de inicio:    1  punto
    Modificador extra 'FueraDeTema'   0  

    Total marcador:   1  
  • Re:Punteros en Qt

    (Puntos:2)
    por koali (1817) el Martes, 31 Octubre de 2006, 13:48h (#836132)
    Errr... el artículo es sobre C, no C++, ¿no?

    No estoy muy puesto en C++, pero se supone que si usas RAII y las 1.316.422 técnicas avanzadas que permite el C++, no deberías tener los mismos problemas de apuntadores en C++ que se tienen en C (¿no era que mejor no usar apuntadores en C++ si no es absolutamente necesario?).
    [ Padre ]
  • 1 respuesta por debajo de tu umbral de lectura actual.