Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Variablen an Funktion übergeben
Forum Updated to NodeBB v4.3 + New Features

Variablen an Funktion übergeben

Scheduled Pinned Locked Moved Solved German
9 Posts 3 Posters 1.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jakobm789
    wrote on last edited by
    #1

    Moin Leute,
    Ich bin ganz neu angefangen mit QT und C++, habe aber schon einige C Kenntnisse.
    Nun zu meiner Frage:

    Ich wollte gerne diesen Code in eine Funktion ablegen:

    switch (RMD) {
        case 0:
            ui->ReleaseMoverDriveFrame->setStyleSheet("background: lightgreen; border: none !important; border-radius: 5px");
    
            RMD++;
            break;
    
        case 1:
            ui->ReleaseMoverDriveFrame->setStyleSheet("background: grey; border: none !important; border-radius: 5px; ");
            RMD=0;
            break;
    }
    

    Dabei ist RMD eine Normale int Variable und sollte beim Aufrufen der Funktion mit angegeben werden, wobei aber bei jedem Aufruf eine andere, vorher deklarierte Variable genutzt werden soll. Zusätzlich ist das ReleseMoverDriveFrame ein QFrame, welches auch bei jedem aufrufen der Funktion mit angegeben werden sollte.

    Danke für jede Hilfe!

    J.HilkJ 1 Reply Last reply
    0
    • J Jakobm789

      Moin Leute,
      Ich bin ganz neu angefangen mit QT und C++, habe aber schon einige C Kenntnisse.
      Nun zu meiner Frage:

      Ich wollte gerne diesen Code in eine Funktion ablegen:

      switch (RMD) {
          case 0:
              ui->ReleaseMoverDriveFrame->setStyleSheet("background: lightgreen; border: none !important; border-radius: 5px");
      
              RMD++;
              break;
      
          case 1:
              ui->ReleaseMoverDriveFrame->setStyleSheet("background: grey; border: none !important; border-radius: 5px; ");
              RMD=0;
              break;
      }
      

      Dabei ist RMD eine Normale int Variable und sollte beim Aufrufen der Funktion mit angegeben werden, wobei aber bei jedem Aufruf eine andere, vorher deklarierte Variable genutzt werden soll. Zusätzlich ist das ReleseMoverDriveFrame ein QFrame, welches auch bei jedem aufrufen der Funktion mit angegeben werden sollte.

      Danke für jede Hilfe!

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

      hi @Jakobm789 und willkommen!

      Wie weit gehen denn deine C-Kenntnisse ? Weil eine Funktion mit Argumenten erstellen ist in c++ nicht viel anders als in c


      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
      1
      • J Offline
        J Offline
        Jakobm789
        wrote on last edited by Jakobm789
        #3

        Moin, die Int Variable zu übergeben ist nicht das Problem denke ich, nur weiß ich nicht wie ich das QFrame übergeben muss, ob als Pointer oder irgendwie anders? Ich würde es vom Gefühl her irgendwie so machen :

        void testcpp::switchcase(int var, QFrame *frame){
        
            switch (var) {
                case 0:
                    *frame->setStyleSheet("background: lightgreen; border: none !important; border-radius: 5px");
        
                    var++;
                    break;
        
                case 1:
                    *frame->setStyleSheet("background: grey; border: none !important; border-radius: 5px; ");
                    var=0;
                    break;
            }
        }
        

        Aber das Funktioniert so scheinbar nicht.

        J.HilkJ 1 Reply Last reply
        1
        • J Jakobm789

          Moin, die Int Variable zu übergeben ist nicht das Problem denke ich, nur weiß ich nicht wie ich das QFrame übergeben muss, ob als Pointer oder irgendwie anders? Ich würde es vom Gefühl her irgendwie so machen :

          void testcpp::switchcase(int var, QFrame *frame){
          
              switch (var) {
                  case 0:
                      *frame->setStyleSheet("background: lightgreen; border: none !important; border-radius: 5px");
          
                      var++;
                      break;
          
                  case 1:
                      *frame->setStyleSheet("background: grey; border: none !important; border-radius: 5px; ");
                      var=0;
                      break;
              }
          }
          

          Aber das Funktioniert so scheinbar nicht.

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

          @Jakobm789 jup, sieht gut, aus lediglich der extra deref * in *frame->setStyleSheet ist unnötig, dafür ist ja der -> operator da 😉


          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.

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

            @Jakobm789 jup, sieht gut, aus lediglich der extra deref * in *frame->setStyleSheet ist unnötig, dafür ist ja der -> operator da 😉

            J Offline
            J Offline
            Jakobm789
            wrote on last edited by
            #5

            @J-Hilk Jap, Funktioniert, vielen Dank für die schnelle Hilfe!

            1 Reply Last reply
            0
            • ad1170A Offline
              ad1170A Offline
              ad1170
              wrote on last edited by ad1170
              #6

              var++; und var = 0; kannst Du Dir auch sparen. var wird als Wert und nicht als Referenz übergeben, damit ist der geänderte Wert von var nur innerhalb der Funktion gültig.
              Mit anderen Worten, var hat beim Aufruf der Funktion switchcase() immer den Wert der beim Aufruf übergegen wird.

              J 1 Reply Last reply
              2
              • ad1170A ad1170

                var++; und var = 0; kannst Du Dir auch sparen. var wird als Wert und nicht als Referenz übergeben, damit ist der geänderte Wert von var nur innerhalb der Funktion gültig.
                Mit anderen Worten, var hat beim Aufruf der Funktion switchcase() immer den Wert der beim Aufruf übergegen wird.

                J Offline
                J Offline
                Jakobm789
                wrote on last edited by
                #7

                @ad1170 Kann ich das irgendwie umgehen, da ich den Wert auch außerhalb der Funktion benötige?

                J.HilkJ 1 Reply Last reply
                0
                • J Jakobm789

                  @ad1170 Kann ich das irgendwie umgehen, da ich den Wert auch außerhalb der Funktion benötige?

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

                  @Jakobm789 im Prinzip hast du 3 Möglichkeiten

                  • du änderst den Returnwert von void nach int und gibts den modifizierten wert zurück
                  • du legst var als Klassen-Member-Variable an (Definierung in *h) dann ist sie überall in der Klasse verfügbar
                  • du übergibst den int als Referenz void switchcase(int &var, QFrame *frame)

                  Ich bin sicher es gibt noch mehr, aber as sind die 3 Möglichkeiten, die mir gerade so in den Kopf kommen.


                  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.

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

                    @Jakobm789 im Prinzip hast du 3 Möglichkeiten

                    • du änderst den Returnwert von void nach int und gibts den modifizierten wert zurück
                    • du legst var als Klassen-Member-Variable an (Definierung in *h) dann ist sie überall in der Klasse verfügbar
                    • du übergibst den int als Referenz void switchcase(int &var, QFrame *frame)

                    Ich bin sicher es gibt noch mehr, aber as sind die 3 Möglichkeiten, die mir gerade so in den Kopf kommen.

                    J Offline
                    J Offline
                    Jakobm789
                    wrote on last edited by
                    #9

                    @J-Hilk Nochmals vielen Dank!

                    1 Reply Last reply
                    1

                    • Login

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