Variables entre ventanas



  • Hola, estoy empezando a programar en C++ con qt creator y me ha surgido una duda.
    ¿Cómo podría pasar el valor de una variable, de por ejemplo el MainWindow, a otra que esté en un Dialog?
    He estado buscando información y según he podido entender se debe hacer con SIGNAL/SLOT pero no acabo de entender como hacerlo.

    Un saludo y gracias!!!



  • Hola

    Una forma es pasársela como argumento en el constructor. También puedes implementar un método en el Dialog que la reciba.

    Son las dos formas más sencillas que se me ocurren.

    Saludos



  • Podrás poner un pequeño ejemplo de como hacerlo?
    Es que ya te digo que estoy empezando y todavía no tengo los conceptos claros.

    Gracias.



  • Hola

    En caso de que cuando vayas a abrir la ventana ya conozcas el valor que le quieres pasar podrías hacer como te dije, pasándolo como parámetro en el constructor, esta sería la clase Dialog:

    @#ifndef DIALOG_H
    #define DIALOG_H

    #include <QDialog>

    namespace Ui {
    class Dialog;
    }

    class Dialog : public QDialog
    {
    Q_OBJECT

    public:
    explicit Dialog(QString cadena, QWidget *parent = 0);
    ~Dialog();

    private:
    Ui::Dialog *ui;
    };

    #endif // DIALOG_H
    @

    Como ves, he añadido un parámetro de tipo QString, luego en el constructor haces lo que necesites con ese parámetro. Por ejemplo, aquí pongo el texto en un QLabel al que he llamado etMensaje:

    @Dialog::Dialog(QString cadena, QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
    {
    ui->setupUi(this);

    ui->etMensaje->setText(cadena);
    

    }
    @

    Para llamar a la ventana se podría hacer algo así:

    @ Dialog ventana("Hola desde MainWindow", this);
    ventana.exec();
    @

    Abro la ventana y le pasó la cadena "Hola desde MainWindow".

    Te recomiendo que leas sobre programación orientado a objetos y C++, todo esto son temas básicos que deberías conocer.

    Si por el contrario en el momento de crear la ventana aun no conoces el dato que le tienes que pasar podrías hacer uso de señales/slots, no es muy complicado, repásate la documentación de Qt, es muy buena y completa.

    Saludos



  • Gracias!!
    Haciendo lo que me has dicho ya puedo pasar de un dialog a otro.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.