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 removeWidget
Forum Updated to NodeBB v4.3 + New Features

Problema con removeWidget

Scheduled Pinned Locked Moved Solved Italian
3 Posts 2 Posters 1.1k Views 1 Watching
  • 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.
  • F Offline
    F Offline
    fermatqt
    wrote on last edited by
    #1

    ciao!

    ho aggiunto due QRadioButton ad un QHBoxLayout, e sul primo radio button ho collegato questo metodo:

    connect(massivo, SIGNAL(toggled(bool)), this, SLOT(onMassivoChecked()));
    
    void ForzaListiniMovimentiWindow::onMassivoChecked() {
        if (massivo->isChecked()) {
            qDebug() << "ok";
            hl->addWidget(txtListino);
            hl->addWidget(txtNumerat);
            hl->addWidget(txtPeriodo);
            hl->addWidget(txtNumero);
            hl->addWidget(txtSconto);
            hl->addWidget(btnCerca);
            hl->addWidget(btnUpdate);
        } else {
            qDebug() << "ko";
            hl->removeWidget(txtListino);
            hl->removeWidget(txtNumerat);
            hl->removeWidget(txtPeriodo);
            hl->removeWidget(txtNumero);
            hl->removeWidget(txtSconto);
            hl->removeWidget(btnCerca);
            hl->removeWidget(btnUpdate);
        }
    }
    

    cambiando la selezione dei radio button, il qDebug mi mostra i valori corretti.
    inoltre i componenti vengono aggiunti corrattemente, ma non vengono rimossi.
    in sostanza, quando entro nell'else, succede che:

    • il qDebug mi mostra ko
    • il secondo radio button, quindi quello cliccato, scompare
    • gli altri widget rimangono

    come devo fare per rimiuovere queu widget??

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

      quando li rimuovi li devi spostare da un altra parte?

      Di solito, per questi casi, si usa hide/show (o setVisible) per efficienza:

      void ForzaListiniMovimentiWindow::onMassivoChecked(bool val) {
      for(QWidget* singleWid : {txtListino,txtNumerat,txtPeriodo,txtNumero,txtSconto,btnCerca,btnUpdate})
      singleWid->setVisible(val);
      }
      

      occhio che ho aggiunto un argomento alla funzione quindi devi aggiungerlo anche al connect o, ancora meglio, usa il nuovo connect:
      connect(massivo, &QRadioButton::toggled, this, &ForzaListiniMovimentiWindow::onMassivoChecked);

      "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

      F 1 Reply Last reply
      0
      • VRoninV VRonin

        quando li rimuovi li devi spostare da un altra parte?

        Di solito, per questi casi, si usa hide/show (o setVisible) per efficienza:

        void ForzaListiniMovimentiWindow::onMassivoChecked(bool val) {
        for(QWidget* singleWid : {txtListino,txtNumerat,txtPeriodo,txtNumero,txtSconto,btnCerca,btnUpdate})
        singleWid->setVisible(val);
        }
        

        occhio che ho aggiunto un argomento alla funzione quindi devi aggiungerlo anche al connect o, ancora meglio, usa il nuovo connect:
        connect(massivo, &QRadioButton::toggled, this, &ForzaListiniMovimentiWindow::onMassivoChecked);

        F Offline
        F Offline
        fermatqt
        wrote on last edited by
        #3

        @VRonin said in Problema con removeWidget:

        quando li rimuovi li devi spostare da un altra parte?

        Di solito, per questi casi, si usa hide/show (o setVisible) per efficienza:

        void ForzaListiniMovimentiWindow::onMassivoChecked(bool val) {
        const auto widgetDaCambiare[] = {txtListino,txtNumerat,txtPeriodo,txtNumero,txtSconto,btnCerca,btnUpdate};
        for(QWidget* singleWid : widgetDaCambiare)
        singleWid->setVisible(val);
        }
        
        

        occhio che ho aggiunto un argomento alla funzione quindi devi aggiungerlo anche al connect o, ancora meglio, usa il nuovo connect:
        connect(massivo, &QRadioButton::toggled, this, &ForzaListiniMovimentiWindow::onMassivoChecked);

        ciao!
        si infatti alla fine ho optato per il setVisible.
        grazie!

        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