Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Das Connect beim Signal und Slot gibt mir eine false zurück warum?
Forum Updated to NodeBB v4.3 + New Features

Das Connect beim Signal und Slot gibt mir eine false zurück warum?

Scheduled Pinned Locked Moved Solved German
9 Posts 2 Posters 2.0k 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.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo Zusammen,

    folgende Connect beim Signal und Slot habe ich :

    bool test = QObject::connect(ui.pushButtonPrint, SIGNAL(clicked()), SLOT(print(0)));
    

    Meine Frage gibt mir das connect hier eine false zurück?
    Die Deklaration des Slots sieht so aus :

    #ifndef QT_NO_PRINTER
    	void print(int i);
    #endif
    

    Die Implentiereung ist erstmal irrelevant.

    Danke

    1 Reply Last reply
    0
    • G Offline
      G Offline
      Galilio
      wrote on last edited by
      #2

      Sollte das Slot die gleiche Signature wie das Signal?

      1 Reply Last reply
      0
      • J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by J.Hilk
        #3

        @Galilio said in Das Connect beim Signal und Slot gibt mir eine false zurück warum?:

        QObject::connect(ui.pushButtonPrint, SIGNAL(clicked()), SLOT(print(0)));

        Moin,

        QObject::connect erwartet mindesten 4 argumente, maximal 5

        Das von dir angebene Beispiel hat allerdings nur 3, und die Argumente vom signal und slot müssen übereinstimmen, clicked is void aber print scheint einen interger zu erwarten.

        QObject::connect(Sender, SIGNAL, Empfänger, SLOT, Verbindungsart);
        

        Wenn du Qt5 verwendest kannst hier nen Lambda verwenden, um die ganzen Probleme zu umgehen:

        QObject::connect(ui->pushButtonPrint, &QPushButton::clicked, this, [=]{print(0);});
        

        wenn ui nen pointer ist, wovon ich hier mal ausgehe muss du es dereferenzieren btw den -> operator verwenden


        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.

        G J.HilkJ 2 Replies Last reply
        1
        • G Offline
          G Offline
          Galilio
          wrote on last edited by
          #4

          Hallo und danke für die Antwort.
          das dritter parameter war einen Tippfehler.
          Ich benutze Qt 4.8 (es handelt sich um einen bestehende Projekt)

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

            @Galilio said in Das Connect beim Signal und Slot gibt mir eine false zurück warum?:

            QObject::connect(ui.pushButtonPrint, SIGNAL(clicked()), SLOT(print(0)));

            Moin,

            QObject::connect erwartet mindesten 4 argumente, maximal 5

            Das von dir angebene Beispiel hat allerdings nur 3, und die Argumente vom signal und slot müssen übereinstimmen, clicked is void aber print scheint einen interger zu erwarten.

            QObject::connect(Sender, SIGNAL, Empfänger, SLOT, Verbindungsart);
            

            Wenn du Qt5 verwendest kannst hier nen Lambda verwenden, um die ganzen Probleme zu umgehen:

            QObject::connect(ui->pushButtonPrint, &QPushButton::clicked, this, [=]{print(0);});
            

            wenn ui nen pointer ist, wovon ich hier mal ausgehe muss du es dereferenzieren btw den -> operator verwenden

            G Offline
            G Offline
            Galilio
            wrote on last edited by
            #5

            @J.Hilk

            wenn ich auch so schreibe :

            test1 = QObject::connect(ui.pushButtonPrintLS11, SIGNAL(clicked()),this, SLOT(print(0)));
            

            Das Connect gibt mir auch weiterhin einen false Zurück

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

              @Galilio said in Das Connect beim Signal und Slot gibt mir eine false zurück warum?:

              QObject::connect(ui.pushButtonPrint, SIGNAL(clicked()), SLOT(print(0)));

              Moin,

              QObject::connect erwartet mindesten 4 argumente, maximal 5

              Das von dir angebene Beispiel hat allerdings nur 3, und die Argumente vom signal und slot müssen übereinstimmen, clicked is void aber print scheint einen interger zu erwarten.

              QObject::connect(Sender, SIGNAL, Empfänger, SLOT, Verbindungsart);
              

              Wenn du Qt5 verwendest kannst hier nen Lambda verwenden, um die ganzen Probleme zu umgehen:

              QObject::connect(ui->pushButtonPrint, &QPushButton::clicked, this, [=]{print(0);});
              

              wenn ui nen pointer ist, wovon ich hier mal ausgehe muss du es dereferenzieren btw den -> operator verwenden

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

              @Galilio
              @J.Hilk said in Das Connect beim Signal und Slot gibt mir eine false zurück warum?:

              die Argumente vom signal und slot müssen übereinstimmen, clicked is void aber print scheint einen interger zu erwarten.

              Du kannst dem connect keine eigenen Argumente mit geben, in diesem fall 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.

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

                @Galilio
                @J.Hilk said in Das Connect beim Signal und Slot gibt mir eine false zurück warum?:

                die Argumente vom signal und slot müssen übereinstimmen, clicked is void aber print scheint einen interger zu erwarten.

                Du kannst dem connect keine eigenen Argumente mit geben, in diesem fall 0

                G Offline
                G Offline
                Galilio
                wrote on last edited by
                #7

                @J.Hilk

                Mir geht darum, dass ich das print nicht mehr mal implementiere.
                Das print ist eigentlich gleich.
                Nur das PrintObject ist anders, aber was die PrintFunktion macht ist also gleich.

                J.HilkJ 1 Reply Last reply
                0
                • G Galilio

                  @J.Hilk

                  Mir geht darum, dass ich das print nicht mehr mal implementiere.
                  Das print ist eigentlich gleich.
                  Nur das PrintObject ist anders, aber was die PrintFunktion macht ist also gleich.

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

                  @Galilio
                  du kannst nur Funktionen die als SLOT oder als SIGNAL gekennzeichnet sind, in deinem header, verbinden.

                  Beispiel:

                  //.h
                  
                  private slots:
                      void print0(){print(0);}//Slot der kein Argument will
                  
                  //.cpp
                  test1 = QObject::connect(ui.pushButtonPrintLS11, SIGNAL(clicked()),this, SLOT(print0()));
                  

                  falls ui ein pointer ist musst du das connect nochmal abändern zu diesem

                  test1 = QObject::connect(ui->pushButtonPrintLS11, SIGNAL(clicked()),this, SLOT(print0()));
                  

                  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.

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

                    @Galilio
                    du kannst nur Funktionen die als SLOT oder als SIGNAL gekennzeichnet sind, in deinem header, verbinden.

                    Beispiel:

                    //.h
                    
                    private slots:
                        void print0(){print(0);}//Slot der kein Argument will
                    
                    //.cpp
                    test1 = QObject::connect(ui.pushButtonPrintLS11, SIGNAL(clicked()),this, SLOT(print0()));
                    

                    falls ui ein pointer ist musst du das connect nochmal abändern zu diesem

                    test1 = QObject::connect(ui->pushButtonPrintLS11, SIGNAL(clicked()),this, SLOT(print0()));
                    
                    G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #9

                    @J.Hilk
                    Deine Idee ist echt Genial Vielen dank

                    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