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 al conectar señales y slots sobrecargados (overloaded)
Forum Updated to NodeBB v4.3 + New Features

Error al conectar señales y slots sobrecargados (overloaded)

Scheduled Pinned Locked Moved Solved Spanish
qt5.8
3 Posts 2 Posters 1.4k 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.
  • Carlos DiazC Offline
    Carlos DiazC Offline
    Carlos Diaz
    wrote on last edited by Carlos Diaz
    #1

    Que tal, estoy retomando Qt y por falta de practica estoy teniendo problemas conectando señales y slots.

    Tengo un Widget con un QComboBox y un QLCDNumber, el combobox emite una señal cuando el index seleccionado cambia [documentacion], en la misma documentación nos indica que debemos de hacer un static_cast en caso de que estemos usando la sintaxis de puntero a funciones a la hora de conectar la señal (currentIndexChanged) con un slot, como sigue:

    connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
        [=](int index){ /* ... */ });
    

    Esta señal la quiero conectar al QLCDNumber, este tiene el slot (display) [documentación]:

    Según [este] link una de las ventajas de usar la sintaxis de puntero a funciones a la hora de conectar señales y slots es que el compilador puede revisar que los argumentos de la señal y del slot sean los mismos, en este caso ambos son int así que los intento conectar la señal y slot como sigue:

    QObject::connect(ui->comboBox,
                        static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
                        ui->lcdNumber,
                        &QLCDNumber::display);
    

    Y obtengo el siguiente error:

    .../QtProyects/dropDown_map/mainwindow.cpp:30: error: no matching function for call to ‘MainWindow::connect(QComboBox*&, void (QComboBox::*)(int), QLCDNumber*&, <unresolved overloaded function type>)’
                         &QLCDNumber::display);
                                             ^
    

    ¿Alguna sugerencia? Según interpreto el error es como si &QLCDNumber::display no estuviera declarada(?)

    Saludos

    J.HilkJ 1 Reply Last reply
    0
    • Carlos DiazC Carlos Diaz

      Que tal, estoy retomando Qt y por falta de practica estoy teniendo problemas conectando señales y slots.

      Tengo un Widget con un QComboBox y un QLCDNumber, el combobox emite una señal cuando el index seleccionado cambia [documentacion], en la misma documentación nos indica que debemos de hacer un static_cast en caso de que estemos usando la sintaxis de puntero a funciones a la hora de conectar la señal (currentIndexChanged) con un slot, como sigue:

      connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
          [=](int index){ /* ... */ });
      

      Esta señal la quiero conectar al QLCDNumber, este tiene el slot (display) [documentación]:

      Según [este] link una de las ventajas de usar la sintaxis de puntero a funciones a la hora de conectar señales y slots es que el compilador puede revisar que los argumentos de la señal y del slot sean los mismos, en este caso ambos son int así que los intento conectar la señal y slot como sigue:

      QObject::connect(ui->comboBox,
                          static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
                          ui->lcdNumber,
                          &QLCDNumber::display);
      

      Y obtengo el siguiente error:

      .../QtProyects/dropDown_map/mainwindow.cpp:30: error: no matching function for call to ‘MainWindow::connect(QComboBox*&, void (QComboBox::*)(int), QLCDNumber*&, <unresolved overloaded function type>)’
                           &QLCDNumber::display);
                                               ^
      

      ¿Alguna sugerencia? Según interpreto el error es como si &QLCDNumber::display no estuviera declarada(?)

      Saludos

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      @Carlos-Diaz

      No hablo español, pero

      //QLCDNumber::display is overloaded too ->
      QObject::connect(ui->comboBox,
                          static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
                          ui->lcdNumber,
                          static_cast<void(QLCDNumber::*)(int)>(&QLCDNumber::display);
      

      or

      QObject::connect(u->comboBox, 
                       SIGNAL(currentIndexChanged(int)), 
                       ui->lcdNumber,
                       SLOT(display(int)));              
      

      :-)


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      2
      • Carlos DiazC Offline
        Carlos DiazC Offline
        Carlos Diaz
        wrote on last edited by
        #3

        Hola @J-Hilk , si ese era el problema, ahora compila y funciona como debería :), todavía me resta entender el static_cast.

        Saludos :)

        1 Reply Last reply
        0

        • Login

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