Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Problema con segnale che viene emesso più volte
Forum Updated to NodeBB v4.3 + New Features

Problema con segnale che viene emesso più volte

Scheduled Pinned Locked Moved Unsolved Italian
2 Posts 2 Posters 689 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.
  • lagodolioL Offline
    lagodolioL Offline
    lagodolio
    wrote on last edited by
    #1

    Ciao a tutti,
    Ho un (nuovo) problema con l’emissione di un segnale.
    Ho uno widget (Widget_A) che mi mostra dei valori da un database . Posso avere, ad esempio, 30 valori, ma li visualizzo in gruppi da 5.
    Ho inserito due pulsanti Avanti e Indietro per scorrere le pagine in modo da vedere di volta in volta i valori 1…5, 6…10, 11…15, ecc.
    La funzione Document non fa altro che selezionare dal database i valori corretti per ogni gruppo visualizzato nella pagina corrente.

    ```void ViewResult::gotonextpage()
    {
          currentpage++;
          Document( currentpage);
    }
    
    void ViewResult::gotoprevpage()
    {
        currentpage--;
        Document(currentpage);
    }
    
    

    Fino a qui tutto liscio.
    In un altro widget (Widget_B) ho altri due tasti Avanti e Indietro che dovrebbero “aggangiare” i colleghi di Widget_A.

    
    void MainScreen::on_previous_button_clicked()
    {
        connect (this,SIGNAL(clickprev()),widgetA,SLOT(gotoprevpage()));
        emit(clickprev());
        }
    
    void MainScreen::on_next_button_clicked()
    {
        connect (this,SIGNAL(clicknext()),widgetA,SLOT(gotonextpage()));
        emit(clicknext());
            }
    

    Succede che:
    Premo il tasto avanti, ok va a Pagina 2
    Premo il tasto indietro, ok va a Pagina 1
    Premo ancora il tasto avanti e va a Pagina 3…
    Vado indietro, Pagina1
    Clicko su Avanti, pagina 4…
    Se passo ad utilizzare i tasti di Widget_A tutto funziona come deve, riprendendo il corretto funzionamento.

    Pensavo ad un errore nell’assegnazione del valore di pagina (variabile currentpage), invece ho fatto un debug, e ho visto che , all’emissione del segnale (sia per l’avanti che per l’indietro), la funzione viene lanciata due, tre, … n volte a crescere man mano che continuo.
    Non credo che l’errore sia nella funzione base (quella di Widget A), che è banale e funziona bene al suo interno.
    D’altra parte non capisco cosa possa spingere il segnale a ripetersi come se ci fosse un ciclo while…
    Grazie e un saluto a tutti

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      connect crea una nuova connessione tutte le volte che lo chiami. Hai due possibilita':

      • Sposta i connect nel costruttore di MainScreen ivece che negli slot dei pulsanti (fortemente consigliato)
      • Aggiungi Qt::UniqueConnection come quinto argomento al tuo connect

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      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