Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. error en connect para mandar el texto en un line edit de mainwindow a otro formulario
Qt 6.11 is out! See what's new in the release blog

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

Scheduled Pinned Locked Moved Unsolved Spanish
3 Posts 3 Posters 1.1k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    Isaac Mena
    wrote on last edited by
    #1

    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)));
    ^

    Pablo J. RoginaP 1 Reply Last reply
    0
    • juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by
      #2

      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

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      1 Reply Last reply
      0
      • I Isaac Mena

        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)));
        ^

        Pablo J. RoginaP Offline
        Pablo J. RoginaP Offline
        Pablo J. Rogina
        wrote on last edited by
        #3

        @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);
        

        Upvote the answer(s) that helped you solve the issue
        Use "Topic Tools" button to mark your post as Solved
        Add screenshots via postimage.org
        Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

        1 Reply Last reply
        1

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved