Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Connectar Custom Widget con MainWindow
Forum Updated to NodeBB v4.3 + New Features

Connectar Custom Widget con MainWindow

Scheduled Pinned Locked Moved Solved Spanish
5 Posts 2 Posters 1.5k Views
  • 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.
  • R Offline
    R Offline
    raulgg
    wrote on last edited by
    #1

    Hola,
    Estoy a vueltas con una aplicación , en ella tengo varios widget personalizados que se muestran en el CentralWidget de la MainWindow. El caso es que el widget hace un chequeo y según el valor que de, quiero que cambie el StatusBar de la MainWindow. Creo que que el camino es hacerlo con SIGNAL y SLOT. Pero no lo consigo... Estos son los pasos que he seguido:

    inicio.h

    public slots:
        void changeconexionstatus(const bool &statuscon);
    

    inicio.cpp

    void inicio::terminal(){
       prueba *open = new prueba(this);
       connect(open,&prueba::statusconexion,this,&inicio::changeconexionstatus);
       this->setCentralWidget(open);
    }
    
    void inicio::changeconexionstatus (const bool &statuscon){
        if (statuscon){
            statusconico->setPixmap(QPixmap(":/img/img/connect.png"));
        }
    }
    

    prueba.h

    signals:
        void statusconexion(const bool &value);
    

    prueba.cpp

    connect(ui->pushButton,&QPushButton::clicked,this,check_connection);
    
    void tpv::check_connection(){
            emit statusconexion(true);
    }
    

    Con este código si hago click en el botón, funciona, pero lo que quiero es no tener que hacer click en ningún botón, sino que funcione simplemente cuando llamo a la función y esto es lo que no consigo.

    Gracias y un saludo

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

      Hola

      Tu ahí estás conectando el click del botón con la señal, y claro, se dispara cuando se pulsa el botón, tendrías que emitir la señal cuando el objeto que hace las comprobaciones termine de hacerlas.

      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
      • R Offline
        R Offline
        raulgg
        wrote on last edited by raulgg
        #3

        Ok, eso lo entiendo, pero ahí es donde me atasco. La función que hace las comprobaciones es check_connection, pero si la invoco directamente no funciona, no envía la señal. Aquí he puesto muy resumida la función, pero hará ciertas comprobaciones y según el resultado emitirá un valor u otro.

        1 Reply Last reply
        0
        • R Offline
          R Offline
          raulgg
          wrote on last edited by
          #4

          Vale, creo que se lo que pasa pero ahora mismo no se como solucionarlo... el problema creo que es en la linea de ejecución...

          Cuando en la Main Window declaro el custom widget prueba *open = new prueba(this); este se carga por completo y ejecuta la funcion void tpv::check_connection() emitiendo la señal, pero como la conexión en la mainwindow connect(open,&prueba::statusconexion,this,&inicio::changeconexionstatus); aun no se ha cargado no ocurre nada.
          Al hacer lo mismo con un un pushbutton el main y el custom widget ya están totalmente cargados por lo que si funciona.

          Un saludo
          Raul

          1 Reply Last reply
          0
          • R Offline
            R Offline
            raulgg
            wrote on last edited by
            #5

            Ok, ya me dieron solucion...

            Simplemente hay que ejecutar la funcion check_connection desde la mainwindow en vez desde el customwidget....

            tpv *open = new tpv(this);
            connect(open,&prueba::statusconexion,this,&inicio::changeconexionstatus);
            open->check_connection();
            

            Por si le sirve a alguien...

            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