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 J.Hilk

    hi @Urbi und herzlich Willkommen 🎉

    Ok, angenehmen du hast in deiner header Datei ein QTimer object definiert, mittels QTimer m_timer

    dann kannst du im constructor von MainWindow eine Verbindung vom SIGNAL timeout des QTimers mit der Funktion on_pbBandHopping_clicked herstellen:

    connect(&m_timer, &QTimer::timeout, this, &MainWindow:: on_pbBandHopping_clicked);
    

    jetzt brauchst nur noch eine Funktion (SLOT in diesem Fall) wo man das Intervall des Timers einstellen und ihn starten bzw stoppen kann.

    void MainWindow::startStopAutomation ()
    {
         if(m_timer.isRunning())
              m_timer.stop();
         else
              m_timer.stop();
    }
    
    void MainWindow::changeTimerInterval(int timeInMilliSeconds)
    {
          m_timer.stop();
          m_timer.setInterval(timeInMilliSeconds);
          m_timer.start();
    }
    
    U Offline
    U Offline
    Urbi
    wrote on last edited by
    #3

    Hi @J-Hilk, danke für die Antwort.
    Bei der Umsetzung scheitere ich u.a. an folgendem: Wenn der Timer abgelaufen ist, soll ja nicht die ganze Methode ...on_pbBandHopping_clicked neu aufgerufen werden sondern es soll nur darin zur nächsten if-Bedingung gesprungen werden. Welchen Befehl soll ich zu diesem Zweck zwischen den if's einbauen? Oder geht das so in C++ gar nicht? (Meine C++ Kenntnisse sind leider nicht die besten...)

    J.HilkJ 1 Reply Last reply
    0
    • U Urbi

      Hi @J-Hilk, danke für die Antwort.
      Bei der Umsetzung scheitere ich u.a. an folgendem: Wenn der Timer abgelaufen ist, soll ja nicht die ganze Methode ...on_pbBandHopping_clicked neu aufgerufen werden sondern es soll nur darin zur nächsten if-Bedingung gesprungen werden. Welchen Befehl soll ich zu diesem Zweck zwischen den if's einbauen? Oder geht das so in C++ gar nicht? (Meine C++ Kenntnisse sind leider nicht die besten...)

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #4

      @Urbi sicher geht das auch, allerdings würde ich das in eigene eigene Funktion packen um die Ui-Logik ein wenig zu trennen:

      //in header
      int m_bandHoppingIndex = 0;
      
      //.cpp
      //constructor
      connect(&m_timer, &QTimer::timeout, this, &MainWindow:: pbBandHoppingAutomatic);
      
      void MainWindow::pbBandHoppingAutomatic()
      {
         static constexpr int values[4] = {
          136000, 
          472000, 
          1840000, 
          3573000};
         
         setRig(values[m_bandHoppingIndex]);
         
         if(++m_bandHoppingIndex > 3)
             m_bandHoppingIndex = 0;
      }
      
      void MainWindow::changeTimerInterval(int timeInMilliSeconds)
      {
           m_timer.stop();
           m_timer.setInterval(timeInMilliSeconds);
           m_timer.start();
      }
      
      void MainWindow::startStopAutomation ()
      {
          if(m_timer.isRunning())
               m_timer.stop();
          else
               m_timer.start();
      }
      

      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 sicher geht das auch, allerdings würde ich das in eigene eigene Funktion packen um die Ui-Logik ein wenig zu trennen:

        //in header
        int m_bandHoppingIndex = 0;
        
        //.cpp
        //constructor
        connect(&m_timer, &QTimer::timeout, this, &MainWindow:: pbBandHoppingAutomatic);
        
        void MainWindow::pbBandHoppingAutomatic()
        {
           static constexpr int values[4] = {
            136000, 
            472000, 
            1840000, 
            3573000};
           
           setRig(values[m_bandHoppingIndex]);
           
           if(++m_bandHoppingIndex > 3)
               m_bandHoppingIndex = 0;
        }
        
        void MainWindow::changeTimerInterval(int timeInMilliSeconds)
        {
             m_timer.stop();
             m_timer.setInterval(timeInMilliSeconds);
             m_timer.start();
        }
        
        void MainWindow::startStopAutomation ()
        {
            if(m_timer.isRunning())
                 m_timer.stop();
            else
                 m_timer.start();
        }
        
        U Offline
        U Offline
        Urbi
        wrote on last edited by
        #5

        @J-Hilk
        Wie soll mit ... static constexpr int values[4]... es möglich sein, einzelne Frequenzen ab- oder anwählbar zu machen?. Meine UI für den betreffenden Programmteil sieht so aus:

        5382796c-c906-479d-bb13-635cfedd518e-grafik.png

        J.HilkJ 1 Reply Last reply
        0
        • U Urbi

          @J-Hilk
          Wie soll mit ... static constexpr int values[4]... es möglich sein, einzelne Frequenzen ab- oder anwählbar zu machen?. Meine UI für den betreffenden Programmteil sieht so aus:

          5382796c-c906-479d-bb13-635cfedd518e-grafik.png

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #6

          @Urbi

          Mit jedem post den du machst, willst du was anderes machen!

          Post 1: Timer damit der Entscheidungsbaum in on_pbBandHopping_clicked neu abgearbeitet wird
          Post 2: nicht on_pbBandHopping_clicked aufrufen, sondern den nächsten setRig Befehl schreiben
          Post3: Mit nem timer die Checkboxen im Ui ändern

          Was genau willst du machen?


          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 Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by J.Hilk
            #7

            connect(&m_timer, &QTimer::timeout, this, &MainWindow:: nextFrequency);

            void MainWindow::nextFrequency(){
                static std::size_t timerIndex = 0;
                static constexpr std::array<int,4> values = {
                    136000, 
                    472000, 
                    1840000, 
                    3573000};
                
                //eventuel die anderen mit setChecked false auschalten
                switch (timerIndex) {
                case 0: ui->cb2190m->setChecked(true);break;
                case 1: ui->cb630m->setChecked(true);break;
                case 2: ui->cb160m->setChecked(true); break;
                case 3: ui->cb80m->setChecked(true); break;
                }
                setRig(values->at(timerIndex));
                
                if(++timerIndex >= values.size())
                    timerIndex = 0;
            }
            

            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.

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

              @Urbi

              Mit jedem post den du machst, willst du was anderes machen!

              Post 1: Timer damit der Entscheidungsbaum in on_pbBandHopping_clicked neu abgearbeitet wird
              Post 2: nicht on_pbBandHopping_clicked aufrufen, sondern den nächsten setRig Befehl schreiben
              Post3: Mit nem timer die Checkboxen im Ui ändern

              Was genau willst du machen?

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

              Hallo @J-Hilk,
              vielen Dank für deinen Versuch mir zu helfen, aber du scheinst leider überhaupt nicht zu verstehen, was ich mit mit meiner Modifikation im besagten Amateurfunk-Programm machen will.

              Post3: Mit nem timer die Checkboxen im Ui ändern
              

              Das ist nicht korrekt. Die Checkboxen im UI wählt der Nutzer aus um festzulegen, zwischen welchen Frequenzen (und Betriebsarten, das habe ich der Einfachheit halber hier weggelassen) automatisch alle XYZ Minuten gewechselt werden soll.

              Post 2: nicht on_pbBandHopping_clicked aufrufen, sondern den nächsten setRig Befehl schreiben
              

              Ja, das muss natürlich so sein, denn nur der setRig Befehl steuert ja das Funkgerät an, damit es die Frequent wechselt (+ ein weiterer Befehl, der die Betriebsart umschaltet, was ich wie gesagt hier weggelassen habe. Daher ja mein Entscheidungsbaum aus if-Sequenzen.

              Post 1: Timer damit der Entscheidungsbaum in 
              on_pbBandHopping_clicked neu abgearbeitet wird
              

              Der Timer soll nicht den Entscheidungsbaum neu starten, sondern INNERHALB des Entscheidungsbaumes den Übergang zur nächsten if-Sequenz takten.

              U 1 Reply Last reply
              0
              • U Urbi

                Hallo @J-Hilk,
                vielen Dank für deinen Versuch mir zu helfen, aber du scheinst leider überhaupt nicht zu verstehen, was ich mit mit meiner Modifikation im besagten Amateurfunk-Programm machen will.

                Post3: Mit nem timer die Checkboxen im Ui ändern
                

                Das ist nicht korrekt. Die Checkboxen im UI wählt der Nutzer aus um festzulegen, zwischen welchen Frequenzen (und Betriebsarten, das habe ich der Einfachheit halber hier weggelassen) automatisch alle XYZ Minuten gewechselt werden soll.

                Post 2: nicht on_pbBandHopping_clicked aufrufen, sondern den nächsten setRig Befehl schreiben
                

                Ja, das muss natürlich so sein, denn nur der setRig Befehl steuert ja das Funkgerät an, damit es die Frequent wechselt (+ ein weiterer Befehl, der die Betriebsart umschaltet, was ich wie gesagt hier weggelassen habe. Daher ja mein Entscheidungsbaum aus if-Sequenzen.

                Post 1: Timer damit der Entscheidungsbaum in 
                on_pbBandHopping_clicked neu abgearbeitet wird
                

                Der Timer soll nicht den Entscheidungsbaum neu starten, sondern INNERHALB des Entscheidungsbaumes den Übergang zur nächsten if-Sequenz takten.

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

                Nochmal zur Verdeutlichung: Folgender Code würde funktionieren, wenn nicht durch den Sleep Befehl auch alles andere im Programm angehalten würde:

                void MainWindow::on_pbBandHopping_clicked (bool checked)
                {
                    if (checked) {
                      if (ui->cb2190m->isChecked ()) {
                          setRig (136000);
                          // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                          Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                   }
                      if (ui->cb630m->isChecked ()) {
                          setRig (472000);
                          // + hier ein weiterer Befehl zum Wechsel der Betriebsart;
                          Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                   }
                      if (ui->cb160m->isChecked ()) {
                          setRig (1840000);
                          // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                          Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                   }
                      if (ui->cb80m->isChecked ()) {
                          setRig (3573000);
                          // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                          Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                .... usw.
                

                Sleep (60000) in diesem Beispiel verzögert den Übergang zur nächsten if-Sequenz um 60 Sekunden.

                J.HilkJ U 2 Replies Last reply
                0
                • U Urbi

                  Nochmal zur Verdeutlichung: Folgender Code würde funktionieren, wenn nicht durch den Sleep Befehl auch alles andere im Programm angehalten würde:

                  void MainWindow::on_pbBandHopping_clicked (bool checked)
                  {
                      if (checked) {
                        if (ui->cb2190m->isChecked ()) {
                            setRig (136000);
                            // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                            Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                     }
                        if (ui->cb630m->isChecked ()) {
                            setRig (472000);
                            // + hier ein weiterer Befehl zum Wechsel der Betriebsart;
                            Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                     }
                        if (ui->cb160m->isChecked ()) {
                            setRig (1840000);
                            // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                            Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                     }
                        if (ui->cb80m->isChecked ()) {
                            setRig (3573000);
                            // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                            Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                  .... usw.
                  

                  Sleep (60000) in diesem Beispiel verzögert den Übergang zur nächsten if-Sequenz um 60 Sekunden.

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #10

                  @Urbi !ok, ich denke jetzt hab Ichs :D

                  sowas könnte dann klappen, (diesmal abstrakter gehalten, wird nicht kompilieren ) aber sollte klar werden, wies gemeint ist

                  void bandHopping() {
                      static int startIndex = 0;
                      
                      if(startIndex > maxCase)
                          startIndex = 0;
                      
                      int nextStartIndex = startIndex++;
                      
                      switch (startIndex){
                      case 0:
                          if(ui->cbXXX->isChecked ()){
                              setRig(xxxx);
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                      case 1:
                          if(ui->cbYYY->isChecked ()){
                              setRig(YYYY);
                              startIndex = nextStartIndex;
                              return;
                          } else {
                              nextStartIndex++;
                          }
                          Q_FALLTHROUGH();
                  case 2: .....
                      }
                  }
                  

                  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.

                  1 Reply Last reply
                  0
                  • U Urbi

                    Nochmal zur Verdeutlichung: Folgender Code würde funktionieren, wenn nicht durch den Sleep Befehl auch alles andere im Programm angehalten würde:

                    void MainWindow::on_pbBandHopping_clicked (bool checked)
                    {
                        if (checked) {
                          if (ui->cb2190m->isChecked ()) {
                              setRig (136000);
                              // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                              Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                       }
                          if (ui->cb630m->isChecked ()) {
                              setRig (472000);
                              // + hier ein weiterer Befehl zum Wechsel der Betriebsart;
                              Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                       }
                          if (ui->cb160m->isChecked ()) {
                              setRig (1840000);
                              // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                              Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                       }
                          if (ui->cb80m->isChecked ()) {
                              setRig (3573000);
                              // + hier steht ein weiterer Befehl zum Wechsel der Betriebsart;
                              Sleep (60000);                 // Sleep geht nicht weil dann alles andere im Programmm auch stoppt.
                    .... usw.
                    

                    Sleep (60000) in diesem Beispiel verzögert den Übergang zur nächsten if-Sequenz um 60 Sekunden.

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

                    Für das im Screenshot gezeigte Beispiel bedeutet das also konkret folgendes:
                    Der Nutzer hat 40m, 20m, 17, 10m, und 2m ausgewählt (alle in der Betriebsart FT8) und in der Spin Box ein Frequenzwechselintervall von 1 Minute eingestellt.
                    Beim Aktiviern des Buttons "Band Hopping" müssen also jetzt an das Funkgerät (und das restliche Programm) konkret folgende Befehle gegeben werden:

                    • Sofort:
                      setRig (7047000);
                      on_actionFT8_triggered();

                    • Nach 1 Minute:
                      setRig (14047000);
                      on_actionFT8_triggered();

                    • Nach 2 Minuten:
                      setRig (18100000);
                      on_actionFT8_triggered();

                    • Nach 3 Minuten:
                      setRig (28047000);
                      on_actionFT8_triggered();

                    • Nach 4 Minuten:
                      setRig (144174000);
                      on_actionFT8_triggered();

                    • Nach 5 Minuten wieder:
                      setRig (7047000);
                      on_actionFT8_triggered();

                    Ich hoffe, dass jetzt deutlich wird, was ich erreichen möchte. Und wenn der Nutzer das Frequenzwechselintervall auf 5 Minuten gestellt hat, dann ist dieser "Takt" halt 5 Minuten statt 1 Minute.

                    1 Reply Last reply
                    0
                    • J.HilkJ Offline
                      J.HilkJ Offline
                      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 Offline
                          J.HilkJ Offline
                          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 Offline
                              J.HilkJ Offline
                              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 Offline
                                  J.HilkJ Offline
                                  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 Offline
                                        J.HilkJ Offline
                                        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

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved