Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

error en connect para mandar el texto en un line edit de mainwindow a otro formulario



  • Hola estoy tratantando hacer qué, desde mi ventana principal (MainWindow) el texto dentro de un lineEdit lo pueda usar en otro formulario, estoy intentando con sinal/slots pero no logro hacerlo funcionar
    aquí el código de como lo intento:

    /////////////////////////////////////////MainWindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    signals:

    void capturar_correo();
    

    public slots:

    void guardar_correo(QString correo);
    

    private:
    Ui::MainWindow *ui;
    };

    ////////////////////////////MainWindow.cpp

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    connect(MainWindow,SIGNAL(capturar_correo()),MainWindow,SLOT(guardar_correo(QString)));
    

    }

    void MainWindow::guardar_correo(QString correo){
    correo = ui->lineEdit_correo->text();
    }

    //////////////////////////////////////////////////Formilario2.h

    signals:
    void recibir_correo(QString correo);

    ////////////////////////////////////////////////Formulario2.cpp

    connect(Formulario2,SIGNAL(recibir_correo(QString correo)),MainWindow,SLOT(guardar_correo(QString correo)));

    y para querer recibir el texto emito la señal en formulario2.cpp
    asi

    emit recibir_correo(QString);

    /////////////////////////////////////////////////////////////////////

    y cuando habro el formulario2 con el boton emito la señal del connect en Mainwindow asi:

    emit capturar_correo();

    ////////////////////////////////////////////////////////////////////////

    pero me salen los siguientes errores:
    mainwindow.cpp:20:error: expected primary-expression before ‘,’ token
    connect(MainWindow,SIGNAL(capturar_correo()),MainWindow,SLOT(guardar_correo(QString)));
    ^
    mainwindow.cpp:20: error: expected primary-expression before ‘,’ token
    connect(MainWindow,SIGNAL(capturar_correo()),MainWindow,SLOT(guardar_correo(QString)));
    ^


  • Moderators

    Hola

    Sin ver el resto del código, viendo la línea en la que heces la conexión, creo que tienes un error de sintaxis, donde pones MainWindow dentro de connect, tienes que usar el puntero this, para que haga referencia a esa misma clase.

    Un saludo



  • @Isaac-Mena said in error en connect para mandar el texto en un line edit de mainwindow a otro formulario:

    connect(MainWindow,SIGNAL(capturar_correo()),MainWindow,SLOT(guardar_correo(QString)));

    por favor aprovecha y usa la nueva sintaxis para signals & slots.

    Por otro lado, si lo que quieres es que al abrir el formulario éste pueda mostrar el valor de un QLineEdit de la ventana principal, porqué no simplemente pasas ese valor en el constructor de la clase Formulario2, o agregar un método como Formulario2::setEmail(QString)

    No obstante ten en cuenta que en gral. una clase emite una señal cuando quiere enviar/notificar al resto del mundo (ej. otras clases) acerca de un evento (clicked()) o un nuevo valor cambiado (valueChanged(int value)) por lo que nunca estarías emitiendo una señal para recibir algo. Entonces NO debería suceder

    emit recibir_correo(QString);
    

Log in to reply