Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Array of Labels in Funktionen nutzen
Forum Updated to NodeBB v4.3 + New Features

Array of Labels in Funktionen nutzen

Scheduled Pinned Locked Moved Solved German
7 Posts 2 Posters 1.1k 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 Jakobm789
    #1

    Guten Tag liebe Leute,
    ich habe mal wieder eine Anfängerfrage:
    Wie kann ich ein Array of Pointers auf Qlables erstellen und dies dann im weiteren Verlauf der Klasse nutzen?
    test.h:

    public:
        QLable* ArrayofLables[4]
    

    test.cpp:

    Konstruktor:
    ArrayofLables={ui->Label1, ui->Label2, ui->Label3, ui->Label4};
    
    Funktion:
    test::Buttonclicked{
        for(int i=0; i<4; i++){
            ArrayofLables[i]->setStyleSheet("background: blue;");
        }
    }
    

    So hätte ichs gerne, das Funktioniert aber so nicht. Vielen Dank für eine Antwort!

    J.HilkJ 1 Reply Last reply
    0
    • J Jakobm789

      @J-Hilk Genau ich habe genau deinen Code einfach kopiert und eingefügt.

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

      @Jakobm789 das geht so natürlich nicht, ich hab ne vollwertige Beispielklasse gepostet, einfach irgendwo einfügen wird nicht funktionieren.

      Lass es mich auf die Zeilen von deinem Post reduzieren:

      test.h:
      
      public:
          std::array<QLabel*, 4> ArrayofLables;
      
      test.cpp:
      
      Konstruktor:
      ArrayofLables={ui->Label1, ui->Label2, ui->Label3, ui->Label4};
      
      Funktion:
      test::Buttonclicked{
          for(const auto &lbl : ArrayofLables)
                      lbl->setStyleSheet("background: blue;");
      }
      

      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
      0
      • J Jakobm789

        Guten Tag liebe Leute,
        ich habe mal wieder eine Anfängerfrage:
        Wie kann ich ein Array of Pointers auf Qlables erstellen und dies dann im weiteren Verlauf der Klasse nutzen?
        test.h:

        public:
            QLable* ArrayofLables[4]
        

        test.cpp:

        Konstruktor:
        ArrayofLables={ui->Label1, ui->Label2, ui->Label3, ui->Label4};
        
        Funktion:
        test::Buttonclicked{
            for(int i=0; i<4; i++){
                ArrayofLables[i]->setStyleSheet("background: blue;");
            }
        }
        

        So hätte ichs gerne, das Funktioniert aber so nicht. Vielen Dank für eine Antwort!

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

        Hi @Jakobm789

        Als allererstes würde ich einmal davon abraten c-style arrays zu benutzen, C++ und Qt haben explizite Klassen die sich damit beschäftigen und die man verwenden sollte.

        Wenn du die Länge das Arrays bereits während der Compilezeit kennst, und du es nicht an eine Qt-Funktion übergeben willst, würde ich std::array empfehlen:

        class SomeClass : public QWidget
        {
            Q_OBJECT
        
        private:
            std::array<QLabel*, 4> m_LabelArray;
        
        public:
            explicit SomeClass( QWidget *parent = nullptr)
                : QWidget(parent)
            {
                QLabel *l1(new QLabel(this));
                QLabel *l2(new QLabel(this));
                QLabel *l3(new QLabel(this));
                QLabel *l4(new QLabel(this));
                m_LabelArray = {l1,l2,l3,l4};
                for(const auto &lbl : m_LabelArray)
                    lbl->setStyleSheet("background: blue;");
            }
        
        public slots:
            
        };
        

        alternative gehts auch mit std::vector oder dem Qt-equivalent QVector,
        Vectors haben den Nachteil, dass sie heap Speicher verwenden anstatt stack, aber dafür muss man währen der Compilation die Größe nicht wissen


        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
        0
        • J.HilkJ J.Hilk

          Hi @Jakobm789

          Als allererstes würde ich einmal davon abraten c-style arrays zu benutzen, C++ und Qt haben explizite Klassen die sich damit beschäftigen und die man verwenden sollte.

          Wenn du die Länge das Arrays bereits während der Compilezeit kennst, und du es nicht an eine Qt-Funktion übergeben willst, würde ich std::array empfehlen:

          class SomeClass : public QWidget
          {
              Q_OBJECT
          
          private:
              std::array<QLabel*, 4> m_LabelArray;
          
          public:
              explicit SomeClass( QWidget *parent = nullptr)
                  : QWidget(parent)
              {
                  QLabel *l1(new QLabel(this));
                  QLabel *l2(new QLabel(this));
                  QLabel *l3(new QLabel(this));
                  QLabel *l4(new QLabel(this));
                  m_LabelArray = {l1,l2,l3,l4};
                  for(const auto &lbl : m_LabelArray)
                      lbl->setStyleSheet("background: blue;");
              }
          
          public slots:
              
          };
          

          alternative gehts auch mit std::vector oder dem Qt-equivalent QVector,
          Vectors haben den Nachteil, dass sie heap Speicher verwenden anstatt stack, aber dafür muss man währen der Compilation die Größe nicht wissen

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

          @J-Hilk Danke für deine Hilfe! Jetzt zeigt er mir aber im Konstruktor der cpp "redefinition of SomeClass" an...

          J.HilkJ 1 Reply Last reply
          0
          • J Jakobm789

            @J-Hilk Danke für deine Hilfe! Jetzt zeigt er mir aber im Konstruktor der cpp "redefinition of SomeClass" an...

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

            @Jakobm789 Musst schon zeigen was du gemacht hast. Sieht mir schwer nach copy/paste Fehler aus


            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
            0
            • J.HilkJ J.Hilk

              @Jakobm789 Musst schon zeigen was du gemacht hast. Sieht mir schwer nach copy/paste Fehler aus

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

              @J-Hilk Genau ich habe genau deinen Code einfach kopiert und eingefügt.

              J.HilkJ 1 Reply Last reply
              0
              • J Jakobm789

                @J-Hilk Genau ich habe genau deinen Code einfach kopiert und eingefügt.

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

                @Jakobm789 das geht so natürlich nicht, ich hab ne vollwertige Beispielklasse gepostet, einfach irgendwo einfügen wird nicht funktionieren.

                Lass es mich auf die Zeilen von deinem Post reduzieren:

                test.h:
                
                public:
                    std::array<QLabel*, 4> ArrayofLables;
                
                test.cpp:
                
                Konstruktor:
                ArrayofLables={ui->Label1, ui->Label2, ui->Label3, ui->Label4};
                
                Funktion:
                test::Buttonclicked{
                    for(const auto &lbl : ArrayofLables)
                                lbl->setStyleSheet("background: blue;");
                }
                

                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
                0
                • J.HilkJ J.Hilk

                  @Jakobm789 das geht so natürlich nicht, ich hab ne vollwertige Beispielklasse gepostet, einfach irgendwo einfügen wird nicht funktionieren.

                  Lass es mich auf die Zeilen von deinem Post reduzieren:

                  test.h:
                  
                  public:
                      std::array<QLabel*, 4> ArrayofLables;
                  
                  test.cpp:
                  
                  Konstruktor:
                  ArrayofLables={ui->Label1, ui->Label2, ui->Label3, ui->Label4};
                  
                  Funktion:
                  test::Buttonclicked{
                      for(const auto &lbl : ArrayofLables)
                                  lbl->setStyleSheet("background: blue;");
                  }
                  
                  J Offline
                  J Offline
                  Jakobm789
                  wrote on last edited by
                  #7

                  @J-Hilk Funktioniert perfekt! Nochmals vielen Dank für deine Hilfe!

                  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