Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Einstellbarer QTimer für Befehlsverzögerung
Forum Updated to NodeBB v4.3 + New Features

Einstellbarer QTimer für Befehlsverzögerung

Scheduled Pinned Locked Moved Solved German
29 Posts 2 Posters 7.4k 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.
  • J.HilkJ Online
    J.HilkJ Online
    J.Hilk
    Moderators
    wrote on last edited by
    #12

    hier ein einfaches Beispiel

    #include <QApplication>
    #include <QWidget>
    #include <QtDebug>
    #include <QCheckBox>
    #include <QTimer>
    
    std::array<QCheckBox *, 4> checkBoxes;
    
    
    void setRig(int i) {qDebug() << "Set rig to" <<  i << "Timestamp:" << QTime::currentTime().toString("hh:mm:ss");}
    void onActionTriggered() {qDebug() << "Some other function call";}
    
    void bandHopping() {
        static int startIndex = 0;
    
        if(startIndex >= 4)
            startIndex = 0;
    
        int nextStartIndex = startIndex +1;
    
        switch (startIndex){
        case 0:
            if(checkBoxes.at(0)->isChecked ()){
                setRig(1000);
                startIndex = nextStartIndex;
                onActionTriggered();
                return;
            } else {
                nextStartIndex++;
            }
            Q_FALLTHROUGH();
        case 1:
            if(checkBoxes.at(1)->isChecked ()){
                setRig(2000);
                startIndex = nextStartIndex;
                onActionTriggered();
                return;
            } else {
                nextStartIndex++;
            }
            Q_FALLTHROUGH();
        case 2:
            if(checkBoxes.at(2)->isChecked ()){
                setRig(3000);
                startIndex = nextStartIndex;
                onActionTriggered();
                return;
            } else {
                nextStartIndex++;
            }
            Q_FALLTHROUGH();
        case 3:
            if(checkBoxes.at(3)->isChecked ()){
                setRig(4000);
                startIndex = nextStartIndex;
                onActionTriggered();
                return;
            } else {
                nextStartIndex++;
            }
        }
    }
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QWidget w;
        w.resize(200, 200);
    
        QVBoxLayout *l(new QVBoxLayout(&w));
    
        for(int i = 0; i < 4; i++){
            auto c = new QCheckBox(&w);
            c->setText(QStringLiteral("Checkbox %1").arg(i));
            c->setChecked(i % 2);
            l->addWidget(c);
            checkBoxes[i] = c;
        }
    
        w.show();
    
        QTimer t;
        t.setInterval(6000); // 6 Sekunden
    
        QObject::connect(&t, &QTimer::timeout, &bandHopping);
        t.start();
    
        return a.exec();
    }
    

    39af9466-92a5-4fe7-95a0-3d1ac9107db9-image.png

    so ?


    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.

    U 1 Reply Last reply
    0
    • J.HilkJ J.Hilk

      hier ein einfaches Beispiel

      #include <QApplication>
      #include <QWidget>
      #include <QtDebug>
      #include <QCheckBox>
      #include <QTimer>
      
      std::array<QCheckBox *, 4> checkBoxes;
      
      
      void setRig(int i) {qDebug() << "Set rig to" <<  i << "Timestamp:" << QTime::currentTime().toString("hh:mm:ss");}
      void onActionTriggered() {qDebug() << "Some other function call";}
      
      void bandHopping() {
          static int startIndex = 0;
      
          if(startIndex >= 4)
              startIndex = 0;
      
          int nextStartIndex = startIndex +1;
      
          switch (startIndex){
          case 0:
              if(checkBoxes.at(0)->isChecked ()){
                  setRig(1000);
                  startIndex = nextStartIndex;
                  onActionTriggered();
                  return;
              } else {
                  nextStartIndex++;
              }
              Q_FALLTHROUGH();
          case 1:
              if(checkBoxes.at(1)->isChecked ()){
                  setRig(2000);
                  startIndex = nextStartIndex;
                  onActionTriggered();
                  return;
              } else {
                  nextStartIndex++;
              }
              Q_FALLTHROUGH();
          case 2:
              if(checkBoxes.at(2)->isChecked ()){
                  setRig(3000);
                  startIndex = nextStartIndex;
                  onActionTriggered();
                  return;
              } else {
                  nextStartIndex++;
              }
              Q_FALLTHROUGH();
          case 3:
              if(checkBoxes.at(3)->isChecked ()){
                  setRig(4000);
                  startIndex = nextStartIndex;
                  onActionTriggered();
                  return;
              } else {
                  nextStartIndex++;
              }
          }
      }
      
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
      
          QWidget w;
          w.resize(200, 200);
      
          QVBoxLayout *l(new QVBoxLayout(&w));
      
          for(int i = 0; i < 4; i++){
              auto c = new QCheckBox(&w);
              c->setText(QStringLiteral("Checkbox %1").arg(i));
              c->setChecked(i % 2);
              l->addWidget(c);
              checkBoxes[i] = c;
          }
      
          w.show();
      
          QTimer t;
          t.setInterval(6000); // 6 Sekunden
      
          QObject::connect(&t, &QTimer::timeout, &bandHopping);
          t.start();
      
          return a.exec();
      }
      

      39af9466-92a5-4fe7-95a0-3d1ac9107db9-image.png

      so ?

      U Offline
      U Offline
      Urbi
      wrote on last edited by
      #13

      Hallo @J-Hilk,
      herzlichen Dank, dieser Lösungsansatz müsste die gewünschte Funktionalität ermöglichen. Leider schaffe ich es momentan noch nicht, das QCheckBox array in meine UI einzubauen bzw. meine vorhandenen CheckBoxen zu verwenden. Könnte ich dazu vielleicht nochmal etwas Hilfe bekommen?
      In meiner mainwindow.ui Datei sind die CheckBoxen gegenwärtig in folgendem GridLayoutWidget definiert:

      <widget class="QWidget" name="gridLayoutWidget">
                    <property name="geometry">
                     <rect>
                      <x>10</x>
                      <y>10</y>
                      <width>121</width>
                      <height>180</height>
                     </rect>
                    </property>
                    <layout class="QGridLayout" name="gridLayout_13">
                     <item row="2" column="1">
                      <widget class="QCheckBox" name="cb12m">
                       <property name="text">
                        <string>12m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="1" column="1">
                      <widget class="QCheckBox" name="cb15m">
                       <property name="text">
                        <string>15m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="7" column="1">
                      <widget class="QCheckBox" name="cb70cm">
                       <property name="text">
                        <string>70cm</string>
                       </property>
                      </widget>
                     </item>
                     <item row="7" column="0">
                      <widget class="QCheckBox" name="cb20m">
                       <property name="text">
                        <string>20m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="4" column="1">
                      <widget class="QCheckBox" name="cb6m">
                       <property name="text">
                        <string>6m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="5" column="1">
                      <widget class="QCheckBox" name="cb4m">
                       <property name="text">
                        <string>4m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="5" column="0">
                      <widget class="QCheckBox" name="cb40m">
                       <property name="text">
                        <string>40m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="0" column="0">
                      <widget class="QCheckBox" name="cb2190m">
                       <property name="text">
                        <string>2190m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="1" column="0">
                      <widget class="QCheckBox" name="cb630m">
                       <property name="text">
                        <string>630m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="3" column="0">
                      <widget class="QCheckBox" name="cb80m">
                       <property name="text">
                        <string>80m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="6" column="1">
                      <widget class="QCheckBox" name="cb2m">
                       <property name="text">
                        <string>2m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="4" column="0">
                      <widget class="QCheckBox" name="cb60m">
                       <property name="text">
                        <string>60m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="6" column="0">
                      <widget class="QCheckBox" name="cb30m">
                       <property name="text">
                        <string>30m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="2" column="0">
                      <widget class="QCheckBox" name="cb160m">
                       <property name="text">
                        <string>160m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="3" column="1">
                      <widget class="QCheckBox" name="cb10m">
                       <property name="text">
                        <string>10m</string>
                       </property>
                      </widget>
                     </item>
                     <item row="0" column="1">
                      <widget class="QCheckBox" name="cb17m">
                       <property name="text">
                        <string>17m</string>
                       </property>
                      </widget>
                     </item>
                    </layout>
                   </widget>
      

      Das müsste ja dann irgendwie in ein solches Array umgewandelt werden, richtig?

      J.HilkJ 1 Reply Last reply
      1
      • U Urbi

        Hallo @J-Hilk,
        herzlichen Dank, dieser Lösungsansatz müsste die gewünschte Funktionalität ermöglichen. Leider schaffe ich es momentan noch nicht, das QCheckBox array in meine UI einzubauen bzw. meine vorhandenen CheckBoxen zu verwenden. Könnte ich dazu vielleicht nochmal etwas Hilfe bekommen?
        In meiner mainwindow.ui Datei sind die CheckBoxen gegenwärtig in folgendem GridLayoutWidget definiert:

        <widget class="QWidget" name="gridLayoutWidget">
                      <property name="geometry">
                       <rect>
                        <x>10</x>
                        <y>10</y>
                        <width>121</width>
                        <height>180</height>
                       </rect>
                      </property>
                      <layout class="QGridLayout" name="gridLayout_13">
                       <item row="2" column="1">
                        <widget class="QCheckBox" name="cb12m">
                         <property name="text">
                          <string>12m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="1" column="1">
                        <widget class="QCheckBox" name="cb15m">
                         <property name="text">
                          <string>15m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="7" column="1">
                        <widget class="QCheckBox" name="cb70cm">
                         <property name="text">
                          <string>70cm</string>
                         </property>
                        </widget>
                       </item>
                       <item row="7" column="0">
                        <widget class="QCheckBox" name="cb20m">
                         <property name="text">
                          <string>20m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="4" column="1">
                        <widget class="QCheckBox" name="cb6m">
                         <property name="text">
                          <string>6m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="5" column="1">
                        <widget class="QCheckBox" name="cb4m">
                         <property name="text">
                          <string>4m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="5" column="0">
                        <widget class="QCheckBox" name="cb40m">
                         <property name="text">
                          <string>40m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="0" column="0">
                        <widget class="QCheckBox" name="cb2190m">
                         <property name="text">
                          <string>2190m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="1" column="0">
                        <widget class="QCheckBox" name="cb630m">
                         <property name="text">
                          <string>630m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="3" column="0">
                        <widget class="QCheckBox" name="cb80m">
                         <property name="text">
                          <string>80m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="6" column="1">
                        <widget class="QCheckBox" name="cb2m">
                         <property name="text">
                          <string>2m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="4" column="0">
                        <widget class="QCheckBox" name="cb60m">
                         <property name="text">
                          <string>60m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="6" column="0">
                        <widget class="QCheckBox" name="cb30m">
                         <property name="text">
                          <string>30m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="2" column="0">
                        <widget class="QCheckBox" name="cb160m">
                         <property name="text">
                          <string>160m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="3" column="1">
                        <widget class="QCheckBox" name="cb10m">
                         <property name="text">
                          <string>10m</string>
                         </property>
                        </widget>
                       </item>
                       <item row="0" column="1">
                        <widget class="QCheckBox" name="cb17m">
                         <property name="text">
                          <string>17m</string>
                         </property>
                        </widget>
                       </item>
                      </layout>
                     </widget>
        

        Das müsste ja dann irgendwie in ein solches Array umgewandelt werden, richtig?

        J.HilkJ Online
        J.HilkJ Online
        J.Hilk
        Moderators
        wrote on last edited by
        #14

        hey, @Urbi

        in dem Beispiel habe ich das Array nur genutzt, weil ich keine .ui Datei habe und ich nicht extra eine neue Klasse (h, cpp & ui) erstellen wollte.

        Du kannst natürlich bei dir im code das array.at(x) direkt ersetzen mit ui->cb2190->isChecked() etc.
        😁


        alternative, wenn du gerne eine Checkboxarray/vektor nutzen möchtest, stelle ich einmal folgendes in den Raum:

        //hier im constructor 
        ui->setupUi(this);
        for( auto cBox : ui->gridLayout_13->findChildren<QCheckBox*>())
              checkBoxVector.append(cBox);
        

        Man beachte den Wechsel von array zu vector, da ja nicht zwangsweise bekannt ist, wie viele Checkboxen existieren/gefunden werden


        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.

        U 1 Reply Last reply
        0
        • J.HilkJ J.Hilk

          hey, @Urbi

          in dem Beispiel habe ich das Array nur genutzt, weil ich keine .ui Datei habe und ich nicht extra eine neue Klasse (h, cpp & ui) erstellen wollte.

          Du kannst natürlich bei dir im code das array.at(x) direkt ersetzen mit ui->cb2190->isChecked() etc.
          😁


          alternative, wenn du gerne eine Checkboxarray/vektor nutzen möchtest, stelle ich einmal folgendes in den Raum:

          //hier im constructor 
          ui->setupUi(this);
          for( auto cBox : ui->gridLayout_13->findChildren<QCheckBox*>())
                checkBoxVector.append(cBox);
          

          Man beachte den Wechsel von array zu vector, da ja nicht zwangsweise bekannt ist, wie viele Checkboxen existieren/gefunden werden

          U Offline
          U Offline
          Urbi
          wrote on last edited by
          #15

          @J-Hilk
          Ich habe das jetzt an meine CheckBoxen adaptiert, bekomme aber beim Kompilieren noch Fehlermeldungen

          ...\mainwindow.cpp:9408:45: error: 'bandHopping' was not declared in this scope QObject::connect(&t, &QTimer::timeout, &bandHopping); 
          

          Mein Code lautet momentan:

          void MainWindow::bandHopping() {
            if (ui->pbBandHopping->isChecked ())
          {
                static int startIndex = 0;
          
              if(startIndex >= 19)
                  startIndex = 0;
          
              int nextStartIndex = startIndex +1;
          
              switch (startIndex){
              case 0:
                  if (ui->cb2190m->isChecked ()) {
                      setRig (136000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 1:
                  if (ui->cb630m->isChecked ()) {
                      setRig (472000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 2:
                  if (ui->cb160m->isChecked ()) {
                      setRig (1840000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 3:
                  if (ui->cb80m->isChecked ()) {
                      setRig (3573000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 4:
                  if (ui->cb60m->isChecked ()) {
                      setRig (5357000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 5:
                  if (ui->cb40m->isChecked ()) {
                      setRig (7074000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 6:
                  if (ui->cb30m->isChecked ()) {
                      setRig (10136000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 7:
                  if (ui->cb20m->isChecked ()) {
                      setRig (14074000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 8:
                  if (ui->cb17m->isChecked ()) {
                      setRig (18100000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 9:
                  if (ui->cb15m->isChecked ()) {
                      setRig (21074000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 10:
                  if (ui->cb12m->isChecked ()) {
                      setRig (24915000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 11:
                  if (ui->cb10m->isChecked ()) {
                      setRig (28074000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 12:
                  if (ui->cb6m->isChecked ()) {
                      setRig (50313000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 13:
                  if (ui->cb4m->isChecked ()) {
                      setRig (70154000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 14:
                  if (ui->cb2m->isChecked ()) {
                      setRig (144174000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 15:
                  if (ui->cb70cm->isChecked ()) {
                      setRig (432174000);
                      on_actionFT8_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 16:
                  if (ui->cb40mFT4->isChecked ()) {
                      setRig (7047500);
                      on_actionFT4_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 17:
                  if (ui->cb30mFT4->isChecked ()) {
                      setRig (10140000);
                      on_actionFT4_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
                  Q_FALLTHROUGH();
              case 18:
                  if (ui->cb20mFT4->isChecked ()) {
                      setRig (14080000);
                      on_actionFT4_triggered();
                      startIndex = nextStartIndex;
                      return;
                  } else {
                      nextStartIndex++;
                  }
              }
          }
          }
          
          int main(int argc, char *argv[])
          {
              QApplication a(argc, argv);
          
              QWidget w;
              w.resize(200, 200);
          
              QVBoxLayout *l(new QVBoxLayout(&w));
          
              for(int i = 0; i < 4; i++){
                  auto c = new QCheckBox(&w);
                  c->setText(QStringLiteral("Checkbox %1").arg(i));
                  c->setChecked(i % 2);
                  l->addWidget(c);
                  checkBoxes[i] = c;
              }
          
              w.show();
          
              QTimer t;
              t.setInterval(6000); // 6 Sekunden
          
              QObject::connect(&t, &QTimer::timeout, &bandHopping);
              t.start();
          
              return a.exec();
          }
          

          QApplication a(argc, argv); brauche ich doch auch nicht mehr, oder? Aber wenn ich das wegnehme, gibt es die nächste Fehlermeldung beim Kompilieren. Und den Qtimer benötige ich ja.

          Was mache ich falsch?

          J.HilkJ 1 Reply Last reply
          0
          • U Urbi

            @J-Hilk
            Ich habe das jetzt an meine CheckBoxen adaptiert, bekomme aber beim Kompilieren noch Fehlermeldungen

            ...\mainwindow.cpp:9408:45: error: 'bandHopping' was not declared in this scope QObject::connect(&t, &QTimer::timeout, &bandHopping); 
            

            Mein Code lautet momentan:

            void MainWindow::bandHopping() {
              if (ui->pbBandHopping->isChecked ())
            {
                  static int startIndex = 0;
            
                if(startIndex >= 19)
                    startIndex = 0;
            
                int nextStartIndex = startIndex +1;
            
                switch (startIndex){
                case 0:
                    if (ui->cb2190m->isChecked ()) {
                        setRig (136000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 1:
                    if (ui->cb630m->isChecked ()) {
                        setRig (472000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 2:
                    if (ui->cb160m->isChecked ()) {
                        setRig (1840000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 3:
                    if (ui->cb80m->isChecked ()) {
                        setRig (3573000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 4:
                    if (ui->cb60m->isChecked ()) {
                        setRig (5357000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 5:
                    if (ui->cb40m->isChecked ()) {
                        setRig (7074000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 6:
                    if (ui->cb30m->isChecked ()) {
                        setRig (10136000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 7:
                    if (ui->cb20m->isChecked ()) {
                        setRig (14074000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 8:
                    if (ui->cb17m->isChecked ()) {
                        setRig (18100000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 9:
                    if (ui->cb15m->isChecked ()) {
                        setRig (21074000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 10:
                    if (ui->cb12m->isChecked ()) {
                        setRig (24915000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 11:
                    if (ui->cb10m->isChecked ()) {
                        setRig (28074000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 12:
                    if (ui->cb6m->isChecked ()) {
                        setRig (50313000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 13:
                    if (ui->cb4m->isChecked ()) {
                        setRig (70154000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 14:
                    if (ui->cb2m->isChecked ()) {
                        setRig (144174000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 15:
                    if (ui->cb70cm->isChecked ()) {
                        setRig (432174000);
                        on_actionFT8_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 16:
                    if (ui->cb40mFT4->isChecked ()) {
                        setRig (7047500);
                        on_actionFT4_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 17:
                    if (ui->cb30mFT4->isChecked ()) {
                        setRig (10140000);
                        on_actionFT4_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                    Q_FALLTHROUGH();
                case 18:
                    if (ui->cb20mFT4->isChecked ()) {
                        setRig (14080000);
                        on_actionFT4_triggered();
                        startIndex = nextStartIndex;
                        return;
                    } else {
                        nextStartIndex++;
                    }
                }
            }
            }
            
            int main(int argc, char *argv[])
            {
                QApplication a(argc, argv);
            
                QWidget w;
                w.resize(200, 200);
            
                QVBoxLayout *l(new QVBoxLayout(&w));
            
                for(int i = 0; i < 4; i++){
                    auto c = new QCheckBox(&w);
                    c->setText(QStringLiteral("Checkbox %1").arg(i));
                    c->setChecked(i % 2);
                    l->addWidget(c);
                    checkBoxes[i] = c;
                }
            
                w.show();
            
                QTimer t;
                t.setInterval(6000); // 6 Sekunden
            
                QObject::connect(&t, &QTimer::timeout, &bandHopping);
                t.start();
            
                return a.exec();
            }
            

            QApplication a(argc, argv); brauche ich doch auch nicht mehr, oder? Aber wenn ich das wegnehme, gibt es die nächste Fehlermeldung beim Kompilieren. Und den Qtimer benötige ich ja.

            Was mache ich falsch?

            J.HilkJ Online
            J.HilkJ Online
            J.Hilk
            Moderators
            wrote on last edited by J.Hilk
            #16

            @Urbi ok, stop, Zweischritte zurück :D

            Das Beispiel was ich gemacht habe, war nur eine einzelne main.cpp um ein einfaches und schnell zu übersetzendes Programm zu haben!

            was du brauchst, ist in der MainWindow.h die Funktionsdefinierung

            public:
            void bandHopping();
            

            außerdem sollte mainwindow.h den QTimer besitzen/herstellen

            private:
            QTimer t;
            

            dann kannst du in der mainwindow.cpp den Funktionskörper einfügen

            void MainWindow::bandHopping() {
            ...
            
            ...
            }
            

            der

            int main(int argc, char *argv[])
            

            hat in der Mainwindow.cpp nichts zu suchen!
            der existiert schon und dein Projekt müsste eine main.cpp besitzen, an der du nichts ändern brauchst/musst

            QObject::connect(&t, &QTimer::timeout, &bandHopping);
            

            muss geändert werden, bandHopping ist keine freefloating function mehr, sondern Teil der MainWindow Klasse.
            Es muss also ein anderer overload von connect genutzt werden. Den mit 4 Argumenten

            QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
            

            Deine erste Erfahrung mit c++ bzw Qt ?


            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.

            U 1 Reply Last reply
            0
            • J.HilkJ J.Hilk

              @Urbi ok, stop, Zweischritte zurück :D

              Das Beispiel was ich gemacht habe, war nur eine einzelne main.cpp um ein einfaches und schnell zu übersetzendes Programm zu haben!

              was du brauchst, ist in der MainWindow.h die Funktionsdefinierung

              public:
              void bandHopping();
              

              außerdem sollte mainwindow.h den QTimer besitzen/herstellen

              private:
              QTimer t;
              

              dann kannst du in der mainwindow.cpp den Funktionskörper einfügen

              void MainWindow::bandHopping() {
              ...
              
              ...
              }
              

              der

              int main(int argc, char *argv[])
              

              hat in der Mainwindow.cpp nichts zu suchen!
              der existiert schon und dein Projekt müsste eine main.cpp besitzen, an der du nichts ändern brauchst/musst

              QObject::connect(&t, &QTimer::timeout, &bandHopping);
              

              muss geändert werden, bandHopping ist keine freefloating function mehr, sondern Teil der MainWindow Klasse.
              Es muss also ein anderer overload von connect genutzt werden. Den mit 4 Argumenten

              QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
              

              Deine erste Erfahrung mit c++ bzw Qt ?

              U Offline
              U Offline
              Urbi
              wrote on last edited by
              #17

              @J-Hilk
              In mainwindows.h fehlte unter private noch "QTimer t;", der Rest war drin. Ist jetzt aber eingefügt. Bekomme beim Kompilieren aber trotzdem noch folgende Fehlermeldung:

              ...\mainwindow.cpp:9184:1: error: 't' does not name a type t.setInterval(6000); // 6 Sekunden
              
              ...\mainwindow.cpp:9186:17: error: expected constructor, destructor, or type conversion before '(' token  QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
              
              ...\mainwindow.cpp:9187:1: error: 't' does not name a type t.start();
              

              Mein aktueller Code:

              QTimer t;
              t.setInterval(6000); // 6 Sekunden
              
              QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
              t.start();
              
              void MainWindow::bandHopping() {
                if (ui->pbBandHopping->isChecked ())
              {
                    static int startIndex = 0;
              
                  if(startIndex >= 19)
                      startIndex = 0;
              
                  int nextStartIndex = startIndex +1;
              
                  switch (startIndex){
                  case 0:
                      if (ui->cb2190m->isChecked ()) {
                          setRig (136000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 1:
                      if (ui->cb630m->isChecked ()) {
                          setRig (472000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 2:
                      if (ui->cb160m->isChecked ()) {
                          setRig (1840000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 3:
                      if (ui->cb80m->isChecked ()) {
                          setRig (3573000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 4:
                      if (ui->cb60m->isChecked ()) {
                          setRig (5357000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 5:
                      if (ui->cb40m->isChecked ()) {
                          setRig (7074000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 6:
                      if (ui->cb30m->isChecked ()) {
                          setRig (10136000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 7:
                      if (ui->cb20m->isChecked ()) {
                          setRig (14074000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 8:
                      if (ui->cb17m->isChecked ()) {
                          setRig (18100000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 9:
                      if (ui->cb15m->isChecked ()) {
                          setRig (21074000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 10:
                      if (ui->cb12m->isChecked ()) {
                          setRig (24915000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 11:
                      if (ui->cb10m->isChecked ()) {
                          setRig (28074000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 12:
                      if (ui->cb6m->isChecked ()) {
                          setRig (50313000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 13:
                      if (ui->cb4m->isChecked ()) {
                          setRig (70154000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 14:
                      if (ui->cb2m->isChecked ()) {
                          setRig (144174000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 15:
                      if (ui->cb70cm->isChecked ()) {
                          setRig (432174000);
                          on_actionFT8_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 16:
                      if (ui->cb40mFT4->isChecked ()) {
                          setRig (7047500);
                          on_actionFT4_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 17:
                      if (ui->cb30mFT4->isChecked ()) {
                          setRig (10140000);
                          on_actionFT4_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                      Q_FALLTHROUGH();
                  case 18:
                      if (ui->cb20mFT4->isChecked ()) {
                          setRig (14080000);
                          on_actionFT4_triggered();
                          startIndex = nextStartIndex;
                          return;
                      } else {
                          nextStartIndex++;
                      }
                  }
              }
              }
              

              Sorry, I am an absolute beginner with Qt...

              J.HilkJ 1 Reply Last reply
              0
              • U Urbi

                @J-Hilk
                In mainwindows.h fehlte unter private noch "QTimer t;", der Rest war drin. Ist jetzt aber eingefügt. Bekomme beim Kompilieren aber trotzdem noch folgende Fehlermeldung:

                ...\mainwindow.cpp:9184:1: error: 't' does not name a type t.setInterval(6000); // 6 Sekunden
                
                ...\mainwindow.cpp:9186:17: error: expected constructor, destructor, or type conversion before '(' token  QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
                
                ...\mainwindow.cpp:9187:1: error: 't' does not name a type t.start();
                

                Mein aktueller Code:

                QTimer t;
                t.setInterval(6000); // 6 Sekunden
                
                QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
                t.start();
                
                void MainWindow::bandHopping() {
                  if (ui->pbBandHopping->isChecked ())
                {
                      static int startIndex = 0;
                
                    if(startIndex >= 19)
                        startIndex = 0;
                
                    int nextStartIndex = startIndex +1;
                
                    switch (startIndex){
                    case 0:
                        if (ui->cb2190m->isChecked ()) {
                            setRig (136000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 1:
                        if (ui->cb630m->isChecked ()) {
                            setRig (472000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 2:
                        if (ui->cb160m->isChecked ()) {
                            setRig (1840000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 3:
                        if (ui->cb80m->isChecked ()) {
                            setRig (3573000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 4:
                        if (ui->cb60m->isChecked ()) {
                            setRig (5357000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 5:
                        if (ui->cb40m->isChecked ()) {
                            setRig (7074000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 6:
                        if (ui->cb30m->isChecked ()) {
                            setRig (10136000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 7:
                        if (ui->cb20m->isChecked ()) {
                            setRig (14074000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 8:
                        if (ui->cb17m->isChecked ()) {
                            setRig (18100000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 9:
                        if (ui->cb15m->isChecked ()) {
                            setRig (21074000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 10:
                        if (ui->cb12m->isChecked ()) {
                            setRig (24915000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 11:
                        if (ui->cb10m->isChecked ()) {
                            setRig (28074000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 12:
                        if (ui->cb6m->isChecked ()) {
                            setRig (50313000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 13:
                        if (ui->cb4m->isChecked ()) {
                            setRig (70154000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 14:
                        if (ui->cb2m->isChecked ()) {
                            setRig (144174000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 15:
                        if (ui->cb70cm->isChecked ()) {
                            setRig (432174000);
                            on_actionFT8_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 16:
                        if (ui->cb40mFT4->isChecked ()) {
                            setRig (7047500);
                            on_actionFT4_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 17:
                        if (ui->cb30mFT4->isChecked ()) {
                            setRig (10140000);
                            on_actionFT4_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                        Q_FALLTHROUGH();
                    case 18:
                        if (ui->cb20mFT4->isChecked ()) {
                            setRig (14080000);
                            on_actionFT4_triggered();
                            startIndex = nextStartIndex;
                            return;
                        } else {
                            nextStartIndex++;
                        }
                    }
                }
                }
                

                Sorry, I am an absolute beginner with Qt...

                J.HilkJ Online
                J.HilkJ Online
                J.Hilk
                Moderators
                wrote on last edited by J.Hilk
                #18

                @Urbi

                In mainwindows.h fehlte unter private noch "QTimer t;", der Rest war drin. Ist jetzt aber eingefügt. Bekomme beim Kompilieren aber trotzdem noch folgende Fehlermeldung:

                ok, wir haben dem Compiler gesagt, "Es gibt eine Klasse QTimer und ich will eine Instanz davon in MainWindow haben"

                Und der Compiler sagt uns mit den Fehlermeldungen:
                "Schön und gut, aber ich weiß nicht wie QTimer definiert ist"

                Das ist kein Problem, QTimer ist definiert und Teil des QtFrameworks, aber bisher noch nicht in unserem Projekt.

                in MainWindow.h oben bei den includes im oberen Bereich musst du folgendes eintragen:
                #include <QTimer>

                Das sagt dem Compiler, für mainwindow.h brauchst du QTimer, lade es bitte mit in die Datei beim kompilieren.

                QTimer t;
                t.setInterval(6000); // 6 Sekunden

                QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
                t.start();

                Kannst du hier mehr vom tatsächlichen Constructor zeigen? weil so wie es aussieht besteht eine hohe Gefahr, dass du etwas gemacht hast, was man allgemein hin als
                Variable Shadowing bezeichnet!

                Sorry, I am an absolute beginner with Qt...

                Kein problem, wir haben alle irgendwo angefangen, ist aber gut zu wissen, damit man weiß wie weit man ausholen muss, wenn man was erklärt!

                Ich würde, unabhängig von deinem jetzigen Projekt, empfehlen mal die Beispiele von Qt durch zu gehen, die sind genauso wie die offizielle Dokumentation ausgezeichnet und nahezu einmalig in Detail und Qualität, verglichen zu anderen Frameworks
                https://doc.qt.io/qt-5/qtexamplesandtutorials.html

                QtCreator, der IDE von dem ich annehme, dass du ihn hier verwendest, kommt mit den Beispielen vorinstalliert. Brauchst nur den Beispiel/Examples Knopf zu drücken


                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.

                U 1 Reply Last reply
                0
                • J.HilkJ J.Hilk

                  @Urbi

                  In mainwindows.h fehlte unter private noch "QTimer t;", der Rest war drin. Ist jetzt aber eingefügt. Bekomme beim Kompilieren aber trotzdem noch folgende Fehlermeldung:

                  ok, wir haben dem Compiler gesagt, "Es gibt eine Klasse QTimer und ich will eine Instanz davon in MainWindow haben"

                  Und der Compiler sagt uns mit den Fehlermeldungen:
                  "Schön und gut, aber ich weiß nicht wie QTimer definiert ist"

                  Das ist kein Problem, QTimer ist definiert und Teil des QtFrameworks, aber bisher noch nicht in unserem Projekt.

                  in MainWindow.h oben bei den includes im oberen Bereich musst du folgendes eintragen:
                  #include <QTimer>

                  Das sagt dem Compiler, für mainwindow.h brauchst du QTimer, lade es bitte mit in die Datei beim kompilieren.

                  QTimer t;
                  t.setInterval(6000); // 6 Sekunden

                  QObject::connect(&t, &QTimer::timeout, this, &MainWindow::bandHopping);
                  t.start();

                  Kannst du hier mehr vom tatsächlichen Constructor zeigen? weil so wie es aussieht besteht eine hohe Gefahr, dass du etwas gemacht hast, was man allgemein hin als
                  Variable Shadowing bezeichnet!

                  Sorry, I am an absolute beginner with Qt...

                  Kein problem, wir haben alle irgendwo angefangen, ist aber gut zu wissen, damit man weiß wie weit man ausholen muss, wenn man was erklärt!

                  Ich würde, unabhängig von deinem jetzigen Projekt, empfehlen mal die Beispiele von Qt durch zu gehen, die sind genauso wie die offizielle Dokumentation ausgezeichnet und nahezu einmalig in Detail und Qualität, verglichen zu anderen Frameworks
                  https://doc.qt.io/qt-5/qtexamplesandtutorials.html

                  QtCreator, der IDE von dem ich annehme, dass du ihn hier verwendest, kommt mit den Beispielen vorinstalliert. Brauchst nur den Beispiel/Examples Knopf zu drücken

                  U Offline
                  U Offline
                  Urbi
                  wrote on last edited by
                  #19

                  Hi @J-Hilk, jetzt bin ich einen großen Schritt vorangekommen.

                  • Die Kompilierungsfehler habe ich alle beseitigt.

                  • Die Grundfunktionalität des Wechsels zum jeweils nächsten klappt jetzt, aber nur wenn ich sie manuell über MainWindow::bandHopping(); auslöse.

                  • Denn leider "timed" der Timer einfach nicht. Ich habe ihn übrigens in qsyTimer umbenannt (der Name "t" führte zu Fehlern), aber er löst einfach den Befehl MainWindow::bandHopping() nicht aus.

                  Woran mag es liegen, dass der Timer nicht den Bandwechsel auslöst?

                  Hier mein aktueller Code:

                  void MainWindow::on_pbBandHopping_clicked (bool checked)
                  {
                      if (checked) {
                          QTimer qsyTimer;
                          qsyTimer.setInterval(6000);                  // 6 Sekunden
                  
                          QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                          qsyTimer.start();
                  
                          MainWindow::bandHopping(); // manuelle Auslösung des bandHoppings, weil der Timer nicht funktioniert
                       }
                  }
                  
                  void MainWindow::bandHopping()
                  {
                      static int startIndex = 0;
                  
                      if(startIndex >= 19) {  // hier fehlte eine geschweifte Klammer
                          startIndex = 0;
                      }  // hier fehlte eine geschweifte Klammer
                      int nextStartIndex = startIndex +1;
                  
                      switch (startIndex){
                      case 0:
                          if (ui->cb2190m->isChecked ()) {
                              setRig (136000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 1:
                          if (ui->cb630m->isChecked ()) {
                              setRig (472000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 2:
                          if (ui->cb160m->isChecked ()) {
                              setRig (1840000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 3:
                          if (ui->cb80m->isChecked ()) {
                              setRig (3573000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 4:
                          if (ui->cb60m->isChecked ()) {
                              setRig (5357000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 5:
                          if (ui->cb40m->isChecked ()) {
                              setRig (7074000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 6:
                          if (ui->cb30m->isChecked ()) {
                              setRig (10136000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 7:
                          if (ui->cb20m->isChecked ()) {
                              setRig (14074000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 8:
                          if (ui->cb17m->isChecked ()) {
                              setRig (18100000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 9:
                          if (ui->cb15m->isChecked ()) {
                              setRig (21074000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 10:
                          if (ui->cb12m->isChecked ()) {
                              setRig (24915000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 11:
                          if (ui->cb10m->isChecked ()) {
                              setRig (28074000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 12:
                          if (ui->cb6m->isChecked ()) {
                              setRig (50313000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 13:
                          if (ui->cb4m->isChecked ()) {
                              setRig (70154000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 14:
                          if (ui->cb2m->isChecked ()) {
                              setRig (144174000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 15:
                          if (ui->cb70cm->isChecked ()) {
                              setRig (432174000);
                              on_actionFT8_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 16:
                          if (ui->cb40mFT4->isChecked ()) {
                              setRig (7047500);
                              on_actionFT4_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 17:
                          if (ui->cb30mFT4->isChecked ()) {
                              setRig (10140000);
                              on_actionFT4_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 18:
                          if (ui->cb20mFT4->isChecked ()) {
                              setRig (14080000);
                              on_actionFT4_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 19:
                          if (ui->cb17mFT4->isChecked ()) {
                              setRig (18104000);
                              on_actionFT4_triggered();
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                  
                          }
                      }
                  }
                  
                  U J.HilkJ 2 Replies Last reply
                  0
                  • U Urbi

                    Hi @J-Hilk, jetzt bin ich einen großen Schritt vorangekommen.

                    • Die Kompilierungsfehler habe ich alle beseitigt.

                    • Die Grundfunktionalität des Wechsels zum jeweils nächsten klappt jetzt, aber nur wenn ich sie manuell über MainWindow::bandHopping(); auslöse.

                    • Denn leider "timed" der Timer einfach nicht. Ich habe ihn übrigens in qsyTimer umbenannt (der Name "t" führte zu Fehlern), aber er löst einfach den Befehl MainWindow::bandHopping() nicht aus.

                    Woran mag es liegen, dass der Timer nicht den Bandwechsel auslöst?

                    Hier mein aktueller Code:

                    void MainWindow::on_pbBandHopping_clicked (bool checked)
                    {
                        if (checked) {
                            QTimer qsyTimer;
                            qsyTimer.setInterval(6000);                  // 6 Sekunden
                    
                            QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                            qsyTimer.start();
                    
                            MainWindow::bandHopping(); // manuelle Auslösung des bandHoppings, weil der Timer nicht funktioniert
                         }
                    }
                    
                    void MainWindow::bandHopping()
                    {
                        static int startIndex = 0;
                    
                        if(startIndex >= 19) {  // hier fehlte eine geschweifte Klammer
                            startIndex = 0;
                        }  // hier fehlte eine geschweifte Klammer
                        int nextStartIndex = startIndex +1;
                    
                        switch (startIndex){
                        case 0:
                            if (ui->cb2190m->isChecked ()) {
                                setRig (136000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 1:
                            if (ui->cb630m->isChecked ()) {
                                setRig (472000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 2:
                            if (ui->cb160m->isChecked ()) {
                                setRig (1840000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 3:
                            if (ui->cb80m->isChecked ()) {
                                setRig (3573000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 4:
                            if (ui->cb60m->isChecked ()) {
                                setRig (5357000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 5:
                            if (ui->cb40m->isChecked ()) {
                                setRig (7074000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 6:
                            if (ui->cb30m->isChecked ()) {
                                setRig (10136000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 7:
                            if (ui->cb20m->isChecked ()) {
                                setRig (14074000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 8:
                            if (ui->cb17m->isChecked ()) {
                                setRig (18100000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 9:
                            if (ui->cb15m->isChecked ()) {
                                setRig (21074000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 10:
                            if (ui->cb12m->isChecked ()) {
                                setRig (24915000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 11:
                            if (ui->cb10m->isChecked ()) {
                                setRig (28074000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 12:
                            if (ui->cb6m->isChecked ()) {
                                setRig (50313000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 13:
                            if (ui->cb4m->isChecked ()) {
                                setRig (70154000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 14:
                            if (ui->cb2m->isChecked ()) {
                                setRig (144174000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 15:
                            if (ui->cb70cm->isChecked ()) {
                                setRig (432174000);
                                on_actionFT8_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 16:
                            if (ui->cb40mFT4->isChecked ()) {
                                setRig (7047500);
                                on_actionFT4_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 17:
                            if (ui->cb30mFT4->isChecked ()) {
                                setRig (10140000);
                                on_actionFT4_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 18:
                            if (ui->cb20mFT4->isChecked ()) {
                                setRig (14080000);
                                on_actionFT4_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                            }
                            Q_FALLTHROUGH();
                        case 19:
                            if (ui->cb17mFT4->isChecked ()) {
                                setRig (18104000);
                                on_actionFT4_triggered();
                                startIndex = nextStartIndex;
                                return;
                            } else {
                                nextStartIndex++;
                    
                            }
                        }
                    }
                    
                    U Offline
                    U Offline
                    Urbi
                    wrote on last edited by
                    #20

                    Noch eine Ergänzung: Wenn ich einen anderen im Projekt schon vorhandenen Timer mit dem bandHopping verbinde, funktioniert es einwandfrei:

                    void MainWindow::on_pbBandHopping_clicked (bool checked)
                    {
                        if (checked) {
                            connect (&minuteTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                         }
                    }
                    

                    Kann ich als Workaround sogar einstweilen verwenden, denn so wechselt das Band immer exakt zur vollen Minute.

                    Aber: Warum klappt der eigene qsyTimer nicht?

                    1 Reply Last reply
                    0
                    • U Urbi

                      Hi @J-Hilk, jetzt bin ich einen großen Schritt vorangekommen.

                      • Die Kompilierungsfehler habe ich alle beseitigt.

                      • Die Grundfunktionalität des Wechsels zum jeweils nächsten klappt jetzt, aber nur wenn ich sie manuell über MainWindow::bandHopping(); auslöse.

                      • Denn leider "timed" der Timer einfach nicht. Ich habe ihn übrigens in qsyTimer umbenannt (der Name "t" führte zu Fehlern), aber er löst einfach den Befehl MainWindow::bandHopping() nicht aus.

                      Woran mag es liegen, dass der Timer nicht den Bandwechsel auslöst?

                      Hier mein aktueller Code:

                      void MainWindow::on_pbBandHopping_clicked (bool checked)
                      {
                          if (checked) {
                              QTimer qsyTimer;
                              qsyTimer.setInterval(6000);                  // 6 Sekunden
                      
                              QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                              qsyTimer.start();
                      
                              MainWindow::bandHopping(); // manuelle Auslösung des bandHoppings, weil der Timer nicht funktioniert
                           }
                      }
                      
                      void MainWindow::bandHopping()
                      {
                          static int startIndex = 0;
                      
                          if(startIndex >= 19) {  // hier fehlte eine geschweifte Klammer
                              startIndex = 0;
                          }  // hier fehlte eine geschweifte Klammer
                          int nextStartIndex = startIndex +1;
                      
                          switch (startIndex){
                          case 0:
                              if (ui->cb2190m->isChecked ()) {
                                  setRig (136000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 1:
                              if (ui->cb630m->isChecked ()) {
                                  setRig (472000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 2:
                              if (ui->cb160m->isChecked ()) {
                                  setRig (1840000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 3:
                              if (ui->cb80m->isChecked ()) {
                                  setRig (3573000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 4:
                              if (ui->cb60m->isChecked ()) {
                                  setRig (5357000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 5:
                              if (ui->cb40m->isChecked ()) {
                                  setRig (7074000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 6:
                              if (ui->cb30m->isChecked ()) {
                                  setRig (10136000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 7:
                              if (ui->cb20m->isChecked ()) {
                                  setRig (14074000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 8:
                              if (ui->cb17m->isChecked ()) {
                                  setRig (18100000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 9:
                              if (ui->cb15m->isChecked ()) {
                                  setRig (21074000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 10:
                              if (ui->cb12m->isChecked ()) {
                                  setRig (24915000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 11:
                              if (ui->cb10m->isChecked ()) {
                                  setRig (28074000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 12:
                              if (ui->cb6m->isChecked ()) {
                                  setRig (50313000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 13:
                              if (ui->cb4m->isChecked ()) {
                                  setRig (70154000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 14:
                              if (ui->cb2m->isChecked ()) {
                                  setRig (144174000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 15:
                              if (ui->cb70cm->isChecked ()) {
                                  setRig (432174000);
                                  on_actionFT8_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 16:
                              if (ui->cb40mFT4->isChecked ()) {
                                  setRig (7047500);
                                  on_actionFT4_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 17:
                              if (ui->cb30mFT4->isChecked ()) {
                                  setRig (10140000);
                                  on_actionFT4_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 18:
                              if (ui->cb20mFT4->isChecked ()) {
                                  setRig (14080000);
                                  on_actionFT4_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                              }
                              Q_FALLTHROUGH();
                          case 19:
                              if (ui->cb17mFT4->isChecked ()) {
                                  setRig (18104000);
                                  on_actionFT4_triggered();
                                  startIndex = nextStartIndex;
                                  return;
                              } else {
                                  nextStartIndex++;
                      
                              }
                          }
                      }
                      
                      J.HilkJ Online
                      J.HilkJ Online
                      J.Hilk
                      Moderators
                      wrote on last edited by
                      #21

                      @Urbi ok,

                      du hast gesagt dein QTimer qsyTimer; wäre in der .h Datei von mainwindow.
                      Ist das der Fall ? Dann haben wir hier in der Tat einen Fall von Variable Shadowing!

                      Zudem kommt noch hinzu dass das hier alles

                      QTimer qsyTimer;
                              qsyTimer.setInterval(6000);                  // 6 Sekunden
                      
                              QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                              qsyTimer.start();
                      

                      Lokale variablen sind und direkt vernichtet werden sobald das Programm } erreicht.

                      Also folgendes:
                      QTimer qsyTimer; nach mainwindow.h

                      private: 
                          QTimer qsyTimer;
                      

                      das hier: weg aus on:pBandHopping_clicked und in den constructor der MainWindow Klasse schieben

                      qsyTimer.setInterval(6000);                  // 6 Sekunden
                      
                              QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                      

                      Kannst du mit Begriff Constructor von MainWindow was anfangen?
                      Die Funktion müsse die Zeile ui->setup(this); enthalten.

                      on_pbBandHopping_clicked müsste nun so aussehen

                      void MainWindow::on_pbBandHopping_clicked (bool checked)
                      {
                          if (checked) {
                              qsyTimer.start();
                           } else {
                              qsyTimer.stop();
                           }
                      }
                      

                      dann sollte es klappen!


                      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.

                      U 1 Reply Last reply
                      0
                      • J.HilkJ J.Hilk

                        @Urbi ok,

                        du hast gesagt dein QTimer qsyTimer; wäre in der .h Datei von mainwindow.
                        Ist das der Fall ? Dann haben wir hier in der Tat einen Fall von Variable Shadowing!

                        Zudem kommt noch hinzu dass das hier alles

                        QTimer qsyTimer;
                                qsyTimer.setInterval(6000);                  // 6 Sekunden
                        
                                QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                                qsyTimer.start();
                        

                        Lokale variablen sind und direkt vernichtet werden sobald das Programm } erreicht.

                        Also folgendes:
                        QTimer qsyTimer; nach mainwindow.h

                        private: 
                            QTimer qsyTimer;
                        

                        das hier: weg aus on:pBandHopping_clicked und in den constructor der MainWindow Klasse schieben

                        qsyTimer.setInterval(6000);                  // 6 Sekunden
                        
                                QObject::connect(&qsyTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                        

                        Kannst du mit Begriff Constructor von MainWindow was anfangen?
                        Die Funktion müsse die Zeile ui->setup(this); enthalten.

                        on_pbBandHopping_clicked müsste nun so aussehen

                        void MainWindow::on_pbBandHopping_clicked (bool checked)
                        {
                            if (checked) {
                                qsyTimer.start();
                             } else {
                                qsyTimer.stop();
                             }
                        }
                        

                        dann sollte es klappen!

                        U Offline
                        U Offline
                        Urbi
                        wrote on last edited by
                        #22

                        Hi @J-Hilk, danke für die erneute Hilfestellung.

                        Ich habe festgestellt, dass ich mit dem vorhandenen minuteTimer eigentlich alles erreichen kann, was ich will. Der Nutzer kann dann zwar nicht mehr das Bandwechsel-Intervall verändern, dafür beginnt es aber jedes Mal exakt zur vollen Minute, was bezüglich der beabsichtigten Funktionalität einige Vorteile bietet. 1 Minute ist als Intervall noch ok, zudem vereinfacht sich dadurch meine Programmergänzung enorm. Ich habe die restlichen Programmierungen eben schon dieser Lösung angepasst und alles finalisiert. Das Band Hopping funktioniert ausgezeichnet! Also werde ich es einstweilen dabei belassen und diesen Fall als "solved" betrachten.

                        Ganz herzlichen Dank für deine Hilfe!

                        J.HilkJ 1 Reply Last reply
                        0
                        • U Urbi

                          Hi @J-Hilk, danke für die erneute Hilfestellung.

                          Ich habe festgestellt, dass ich mit dem vorhandenen minuteTimer eigentlich alles erreichen kann, was ich will. Der Nutzer kann dann zwar nicht mehr das Bandwechsel-Intervall verändern, dafür beginnt es aber jedes Mal exakt zur vollen Minute, was bezüglich der beabsichtigten Funktionalität einige Vorteile bietet. 1 Minute ist als Intervall noch ok, zudem vereinfacht sich dadurch meine Programmergänzung enorm. Ich habe die restlichen Programmierungen eben schon dieser Lösung angepasst und alles finalisiert. Das Band Hopping funktioniert ausgezeichnet! Also werde ich es einstweilen dabei belassen und diesen Fall als "solved" betrachten.

                          Ganz herzlichen Dank für deine Hilfe!

                          J.HilkJ Online
                          J.HilkJ Online
                          J.Hilk
                          Moderators
                          wrote on last edited by
                          #23

                          @Urbi ok alles klar !

                          trotzdem eine Sache noch:

                          void MainWindow::on_pbBandHopping_clicked (bool checked)
                          {
                              if (checked) {
                                  connect (&minuteTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                               }
                          }
                          

                          das connect muss in den constructor, ansonsten has du folgende situation.

                          Beim erstmal pbBandHopping klicken wird wird bandHopping einmal ausgeführt, wenn der timeout passiert.

                          beim zweiten mal klicken wird bandHopping zweimal ausgeführt
                          beim 3ten mal klicken 3 mal, beim 4ten mal 4 mal und so weiter

                          das ist nen massiver bug


                          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.

                          U 1 Reply Last reply
                          0
                          • J.HilkJ J.Hilk

                            @Urbi ok alles klar !

                            trotzdem eine Sache noch:

                            void MainWindow::on_pbBandHopping_clicked (bool checked)
                            {
                                if (checked) {
                                    connect (&minuteTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                                 }
                            }
                            

                            das connect muss in den constructor, ansonsten has du folgende situation.

                            Beim erstmal pbBandHopping klicken wird wird bandHopping einmal ausgeführt, wenn der timeout passiert.

                            beim zweiten mal klicken wird bandHopping zweimal ausgeführt
                            beim 3ten mal klicken 3 mal, beim 4ten mal 4 mal und so weiter

                            das ist nen massiver bug

                            U Offline
                            U Offline
                            Urbi
                            wrote on last edited by
                            #24

                            @J-Hilk
                            Dann sei bitte so nett und erkläre mir das mit dem Constructor nochmal etwas genauer. Der Begriff sagt mir offen gesagt momentan noch nicht viel. Wo finde ich den in mainwindow.cpp und wohin dort muss ich meinen connect Befehl verschieben? (Und wie binde ich dort das if ein, dass das nur bei eingeschaltetem pbBandHopping Button so sein soll?)

                            U 1 Reply Last reply
                            0
                            • U Urbi

                              @J-Hilk
                              Dann sei bitte so nett und erkläre mir das mit dem Constructor nochmal etwas genauer. Der Begriff sagt mir offen gesagt momentan noch nicht viel. Wo finde ich den in mainwindow.cpp und wohin dort muss ich meinen connect Befehl verschieben? (Und wie binde ich dort das if ein, dass das nur bei eingeschaltetem pbBandHopping Button so sein soll?)

                              U Offline
                              U Offline
                              Urbi
                              wrote on last edited by
                              #25

                              Ich glaube, ich habe es selber schon gefunden. Habe

                              connect (&minuteTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                              

                              nach vorne geschoben, dorthin, wo auch schon der andere connect für den minuteTimer war. Dann brauche ich die ganze Methode

                              void on_pbBandHopping_clicked (bool checked)
                              

                              nicht mehr und habe die Abfrage nach dem angeklickten BandHopping Button in die bandHopping Methode übernommen.

                              void MainWindow::bandHopping()
                              {
                                  if(ui->pbBandHopping->isChecked()) {
                              
                                  static int startIndex = 0;
                              
                                  int nextStartIndex = startIndex +1;
                              
                                  switch (startIndex){
                                  case 0:
                                      if (ui->cb2190m->isChecked ()) {
                                          setRig (136000);
                                          on_actionFT8_triggered();
                                          startIndex = nextStartIndex;
                                          return;
                                      } else {
                                          nextStartIndex++;
                                      }
                                      Q_FALLTHROUGH();
                              ...
                              
                              J.HilkJ 1 Reply Last reply
                              1
                              • U Urbi

                                Ich glaube, ich habe es selber schon gefunden. Habe

                                connect (&minuteTimer, &QTimer::timeout, this, &MainWindow::bandHopping);
                                

                                nach vorne geschoben, dorthin, wo auch schon der andere connect für den minuteTimer war. Dann brauche ich die ganze Methode

                                void on_pbBandHopping_clicked (bool checked)
                                

                                nicht mehr und habe die Abfrage nach dem angeklickten BandHopping Button in die bandHopping Methode übernommen.

                                void MainWindow::bandHopping()
                                {
                                    if(ui->pbBandHopping->isChecked()) {
                                
                                    static int startIndex = 0;
                                
                                    int nextStartIndex = startIndex +1;
                                
                                    switch (startIndex){
                                    case 0:
                                        if (ui->cb2190m->isChecked ()) {
                                            setRig (136000);
                                            on_actionFT8_triggered();
                                            startIndex = nextStartIndex;
                                            return;
                                        } else {
                                            nextStartIndex++;
                                        }
                                        Q_FALLTHROUGH();
                                ...
                                
                                J.HilkJ Online
                                J.HilkJ Online
                                J.Hilk
                                Moderators
                                wrote on last edited by
                                #26

                                @Urbi 👍 Eine (von vielen ;)) Möglichkeit es zu machen.
                                Gut das du es gelöst bekommen hast!


                                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.

                                U 1 Reply Last reply
                                0
                                • J.HilkJ J.Hilk

                                  @Urbi 👍 Eine (von vielen ;)) Möglichkeit es zu machen.
                                  Gut das du es gelöst bekommen hast!

                                  U Offline
                                  U Offline
                                  Urbi
                                  wrote on last edited by
                                  #27

                                  Hi @J-Hilk,
                                  noch eine allerletzte Frage: Ich habe an meinem Code noch folgende Änderungen vorgenommen:

                                  • Mit Hilfe der Methode MainWindow::bandHoppingTimer() verdoppele ich das Taktintervall von 1 auf 2 Minuten (aber unter Beibehaltung der Taktung zur vollen Minute aus dem minuteTimer), denn 2 Minuten sind optimal.

                                  • Bisher war es immer so, dasss es nach dem letzten Bandwechsel zweimal das Zeitintervall brauchte. Um das zu beheben habe ich unten in den letzten Case das jetzt so modifiziert, dass über den Befehl MainWindow::bandHoppingTimer(); nach dem letzten ausgewählten Band einfach die komplette Methode neu beginnt. Funktioniert bestens.

                                  Meine Frage an dich: Ist das ok so oder erzeuge ich mit letzterem wieder irgendeinen ungewünschten Effekt?

                                  void MainWindow::bandHoppingTimer()
                                  {
                                      if(ui->pbBandHopping->isChecked()) {
                                      static int startIndex = 0;
                                      int nextStartIndex = startIndex +1;
                                      switch (startIndex){
                                      case 0:
                                              startIndex = nextStartIndex;  // band hopping every other minute
                                              return;
                                      case 1:
                                              MainWindow::bandHopping();
                                              startIndex = 0;
                                              return;
                                       }
                                     }
                                  }
                                  
                                  void MainWindow::bandHopping()
                                  {
                                      if(ui->pbBandHopping->isChecked()) {
                                      static int startIndex = 0;
                                      int nextStartIndex = startIndex +1;
                                      switch (startIndex){
                                      case 0:
                                          if (ui->cb2190m->isChecked ()) {
                                              setRig (136000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 1:
                                          if (ui->cb630m->isChecked ()) {
                                              setRig (472000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 2:
                                          if (ui->cb160m->isChecked ()) {
                                              setRig (1840000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 3:
                                          if (ui->cb80m->isChecked ()) {
                                              setRig (3573000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 4:
                                          if (ui->cb60m->isChecked ()) {
                                              setRig (5357000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 5:
                                          if (ui->cb40m->isChecked ()) {
                                              setRig (7074000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 6:
                                          if (ui->cb30m->isChecked ()) {
                                              setRig (10136000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 7:
                                          if (ui->cb20m->isChecked ()) {
                                              setRig (14074000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 8:
                                          if (ui->cb17m->isChecked ()) {
                                              setRig (18100000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 9:
                                          if (ui->cb15m->isChecked ()) {
                                              setRig (21074000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 10:
                                          if (ui->cb12m->isChecked ()) {
                                              setRig (24915000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 11:
                                          if (ui->cb10m->isChecked ()) {
                                              setRig (28074000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 12:
                                          if (ui->cb6m->isChecked ()) {
                                              setRig (50313000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 13:
                                          if (ui->cb4m->isChecked ()) {
                                              setRig (70154000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 14:
                                          if (ui->cb2m->isChecked ()) {
                                              setRig (144174000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 15:
                                          if (ui->cb70cm->isChecked ()) {
                                              setRig (432174000);
                                              on_actionFT8_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 16:
                                          if (ui->cb40mFT4->isChecked ()) {
                                              setRig (7047500);
                                              on_actionFT4_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 17:
                                          if (ui->cb30mFT4->isChecked ()) {
                                              setRig (10140000);
                                              on_actionFT4_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 18:
                                          if (ui->cb20mFT4->isChecked ()) {
                                              setRig (14080000);
                                              on_actionFT4_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 19:
                                          if (ui->cb17mFT4->isChecked ()) {
                                              setRig (18104000);
                                              on_actionFT4_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 20:
                                          if (ui->cb6mMSK->isChecked ()) {
                                              setRig (50280000);
                                              on_actionMSK144_triggered();
                                              startIndex = nextStartIndex;
                                              return;
                                          } else {
                                              nextStartIndex++;
                                          }
                                          Q_FALLTHROUGH();
                                      case 21:
                                          if (ui->cb2mMSK->isChecked ()) {
                                              setRig (144360000);
                                              on_actionMSK144_triggered();
                                              startIndex = 0;
                                              MainWindow::bandHoppingTimer();
                                              return;
                                          } else {
                                              startIndex = 0;
                                              MainWindow::bandHoppingTimer();
                                          }
                                      }
                                    }
                                  }
                                  
                                  1 Reply Last reply
                                  0
                                  • J.HilkJ Online
                                    J.HilkJ Online
                                    J.Hilk
                                    Moderators
                                    wrote on last edited by
                                    #28

                                    Hi @Urbi

                                    Zu der der Zusätzlichen Funktion habe ich nichts einzuwenden, sieht alles normal aus!

                                    Eine Sache bei der bandHopping es sollte eigentlich nicht nötig sein, dass du beim letzen case die Funktion nochmal aufrufen musst.

                                    Was mir aufgefallen ist, wo setzt du denn startIndex wieder auf 0 zurück?

                                    ich hätte sowas erwartet:

                                    if(ui->pbBandHopping->isChecked()) {
                                        static int startIndex = 0;
                                        if(startIndex > 21)
                                                startIndex = 0;
                                    
                                        int nextStartIndex = startIndex +1;
                                        switch (startIndex){
                                            ....
                                        }
                                    

                                    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.

                                    U 1 Reply Last reply
                                    0
                                    • J.HilkJ J.Hilk

                                      Hi @Urbi

                                      Zu der der Zusätzlichen Funktion habe ich nichts einzuwenden, sieht alles normal aus!

                                      Eine Sache bei der bandHopping es sollte eigentlich nicht nötig sein, dass du beim letzen case die Funktion nochmal aufrufen musst.

                                      Was mir aufgefallen ist, wo setzt du denn startIndex wieder auf 0 zurück?

                                      ich hätte sowas erwartet:

                                      if(ui->pbBandHopping->isChecked()) {
                                          static int startIndex = 0;
                                          if(startIndex > 21)
                                                  startIndex = 0;
                                      
                                          int nextStartIndex = startIndex +1;
                                          switch (startIndex){
                                              ....
                                          }
                                      
                                      U Offline
                                      U Offline
                                      Urbi
                                      wrote on last edited by
                                      #29

                                      @J-Hilk, das hatte ich zuerst, hatte aber den gleichen Effekt (dass es am Ende zweimal das Zeitintervall brauchte. Deswegen hatte ich das zuletzt einfach so gemacht, dass ich im letzten Case startIndex = 0; setze. (Hatte aber am genannten Problem auch nichts verändert). Aber mit der jetzigen Lösung klappt es ja so wie es soll.
                                      Nochmals ganz herzlichen Dank für deine Unterstützung!

                                      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