Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. QEventPress... difficoltà di utilizzo
Qt 6.11 is out! See what's new in the release blog

QEventPress... difficoltà di utilizzo

Scheduled Pinned Locked Moved Unsolved Italian
28 Posts 2 Posters 12.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.
  • B Offline
    B Offline
    bvox123
    wrote on last edited by
    #17

    L'ho fatto, ma rimane il secondo errore detto prima: "virt-specifiers in ..."

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

      hai lasciato virtual nel .cpp? se si toglilo. deve essere solo nel .h

      "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
      0
      • B Offline
        B Offline
        bvox123
        wrote on last edited by
        #19

        Sì sì, ho fatto così e mi viene quell'errore. Per tranquillità riposto le due parti:

        protected:
            Ui::HRnet_0100_QuadroComandi *ui;
            virtual void keyPressEvent(QKeyEvent *);
        
        void HRnet_0100_QuadroComandi::keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE{
               if (event->key() >= Qt::Key_F10 && event->key() <= Qt::Key_F12){
                   faseesecuzione = !faseesecuzione;
                   if(faseesecuzione)
                       m_risultatoContatore->setFuture(QtConcurrent::run(&HRnet_0100_QuadroComandi::contaCicli,&faseesecuzione));
                   return;
               }
               return QWidget::keyPressEvent(event);
           }
        

        e l'errore:
        0_1504261268713_Schermata del 2017-09-01 12-20-38.png

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

          scusa, sono cieco. anche Q_DECL_OVERRIDE va nel .h non nel .cpp

          "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
          0
          • B Offline
            B Offline
            bvox123
            wrote on last edited by
            #21

            WOW ha complilato... Ora vediamo se funziona. In ogni caso: grazie, grazie, grazie.

            1 Reply Last reply
            0
            • B Offline
              B Offline
              bvox123
              wrote on last edited by
              #22

              Non, non riesco a bloccare il loop. Proverò a mettere qualche cout per vedere cos'è che non va.

              1 Reply Last reply
              0
              • B Offline
                B Offline
                bvox123
                wrote on last edited by
                #23

                Nella routine che fa il loop infinito ho inserito uno sleep di 5 secondi per avere il tempo di fare click sul form e pigiare un tasto funzione. Inoltre ho messo un cout all'interno della routine loop. Ecco le routines:

                        while (faseesecuzione != 0) {
                //            QApplication::processEvents();
                            AzioniSulCasino();
                            attesa.msleep(5000);
                        }
                
                void HRnet_0100_QuadroComandi::keyPressEvent(QKeyEvent *event) {
                       if (event->key() >= Qt::Key_F1 && event->key() <= Qt::Key_F12){
                           faseesecuzione = !faseesecuzione;
                           cout << "KeyPress intercettato. faseesecuzione = " << faseesecuzione << endl;
                           if(faseesecuzione)
                               m_risultatoContatore->setFuture(QtConcurrent::run(&HRnet_0100_QuadroComandi::contaCicli,&faseesecuzione));
                           return;
                       }
                       return QWidget::keyPressEvent(event);
                   }
                

                Provato più volte a ridare il focus alla schermata e pigiare un tasto funzione, ma niente... ho dovuto chiudere il programma col click sulla X di chiusura (durante l'attesa dei 5 secondi). Nessun messaggio sul logout, quindi non entra nella routine. L'attesa è necessaria perché durante l'esecuzione normale il mouse viene spostato dal programma.

                VRoninV 1 Reply Last reply
                0
                • B bvox123

                  Nella routine che fa il loop infinito ho inserito uno sleep di 5 secondi per avere il tempo di fare click sul form e pigiare un tasto funzione. Inoltre ho messo un cout all'interno della routine loop. Ecco le routines:

                          while (faseesecuzione != 0) {
                  //            QApplication::processEvents();
                              AzioniSulCasino();
                              attesa.msleep(5000);
                          }
                  
                  void HRnet_0100_QuadroComandi::keyPressEvent(QKeyEvent *event) {
                         if (event->key() >= Qt::Key_F1 && event->key() <= Qt::Key_F12){
                             faseesecuzione = !faseesecuzione;
                             cout << "KeyPress intercettato. faseesecuzione = " << faseesecuzione << endl;
                             if(faseesecuzione)
                                 m_risultatoContatore->setFuture(QtConcurrent::run(&HRnet_0100_QuadroComandi::contaCicli,&faseesecuzione));
                             return;
                         }
                         return QWidget::keyPressEvent(event);
                     }
                  

                  Provato più volte a ridare il focus alla schermata e pigiare un tasto funzione, ma niente... ho dovuto chiudere il programma col click sulla X di chiusura (durante l'attesa dei 5 secondi). Nessun messaggio sul logout, quindi non entra nella routine. L'attesa è necessaria perché durante l'esecuzione normale il mouse viene spostato dal programma.

                  VRoninV Offline
                  VRoninV Offline
                  VRonin
                  wrote on last edited by
                  #24

                  @bvox123 said in QEventPress... difficoltà di utilizzo:

                  while (faseesecuzione != 0) {
                  // QApplication::processEvents();
                  AzioniSulCasino();
                  attesa.msleep(5000);
                  }

                  Dove sarebbe questo loop?

                  "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
                  0
                  • B Offline
                    B Offline
                    bvox123
                    wrote on last edited by
                    #25

                    Quando pigio un pulsante metto a 1 la variabile faseesecuzione e resterà così finché non viene intercettata la pressione di un tasto funzione e lo riporta a zero. Forse qui c'è un errore, perché "non 1" credo che divenga -1 e non zero, comunque nella routine del keypressevent non è mai entrato.

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

                      Intendo in che funzione e'? HRnet_0100_QuadroComandi::contaCicli?

                      "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
                      0
                      • B Offline
                        B Offline
                        bvox123
                        wrote on last edited by
                        #27

                        No, non è in contacicli. Dovrei spostarla lì ? Ma keypressevent non dovrebbe essere invocata comunque ?

                        1 Reply Last reply
                        0
                        • B Offline
                          B Offline
                          bvox123
                          wrote on last edited by
                          #28

                          Ciao VRonin. Mi piacerebbe capire come sistemare le cose affinché funzioni il keypressevent, ma se non è semplice trovarne l'inghippo lascia stare perché ho pensato ad un'altra soluzione alternativa al tasto funzione. A programma testo se è stato spostato il mouse, se no eseguo il loop, se sì arresto l'iterazione.

                          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