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

Problema con segnale che viene emesso più volte

Scheduled Pinned Locked Moved Unsolved Italian
2 Posts 2 Posters 659 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