¿como conecto un dialog con mi mainwindow para que se modifique algo en este ultimo?



  • Hola, que tal, soy bastante nuevo en qt y estaba probando diferentes cosas para aprender a manejarlo.
    Mi problema es que quiero, por ejemplo, que en mi form1 haya un text edit y que al apretar un push button, el texto ingresado se pase a una label en mi MainWindow.
    Como ya dije soy muy nuevo y no entiendo bien, estuve leyendo sobre el tema de señales y slots y entendi algo, pero todo lo que probaba me da error o compila pero no se ejecuta correctamente. Gracias por su tiempo.
    Saludos


  • Moderators

    Hola

    Pues con señales se puede hacer, dices que te daba errores, algo estaba mal, seguro, hay que aprender a entender y saber por que da el error para intentar corregirlos.

    Puedes crear una señal personalizada que envíe un QString y la emites cuando se pulse el botón, y la conectas con el slot setText(QString) del QLabel en el que quieras que se muestre el texto.

    Un saludo



  • Claro, el problema es que no se bien como crear señales ni como usar correctamente el connect.
    Gracias por tu respuesta


  • Moderators

    Hola

    Lo primero que tienes que hacer es crear la señal en el .h de tu form:

    signals:
        void nuevoTexto(QString);
    

    Luego, al pulsar el botón emites la señal:

    void Dialog::on_botonEnviarSeñal_clicked()
    {
        emit nuevoTexto(ui->tu_line_edit->text());
    }
    

    Ahora ya tan solo te falta en el mainwindows crear el diálogo y conectar las señales:

    Dialog *dialog = new Dialog(this);
    connect(dialog, SIGNAL(nuevoTexto(QString)), ui->tu_label, SLOT(setText(QString)));
    

    Algo así creo que debe funcionar.

    Un saludo



  • perdon por la tardanza, recien lo leo. Ya lo pude implementar y es asi como dices, te agradezco por tu respuesta, un saludo.



  • @juanki
    Lo hice, con la diferencia de que en vez de un label habia otro lineEdit, pero no pone nada....


  • Moderators

    Hola @Casino, Imagino que ésta es la solución que enconraste para tu otra pregunta, por favor, recuerda mantener un órden, responder en el hilo apropiado y marcar el tema como solucionado si se encontró la solución.

    Un saludo


Log in to reply