Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. QlineEdit with return to next QlineEdit
Forum Updated to NodeBB v4.3 + New Features

QlineEdit with return to next QlineEdit

Scheduled Pinned Locked Moved German
18 Posts 4 Posters 2.5k Views 2 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.
  • R Roman2052

    Hallo ich bin ein stück weiter. Danke bis hierhin.
    wie kann ich eine Qline ansprechen mit dem Adresse- oder hexadecimal code?
    mit dem "QObject.connect(app, SIGNAL("focusChanged(QWidget *, QWidget *)"), changedFocusSlot)" bekomme ich z.B. 0x06F1C530
    Wie kann ich die jetzt anspechen und ein wert reinschreiben lassen?

    Danke
    Gruß

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by jsulm
    #7

    @Roman2052 Bin mir nicht sicher ich verstehe die Frage.
    Meinst du eines der Zeiger aus der Parameterliste von dem Signal?
    Füge deinem Slot die gleichen Parameter und benutze die Zeiger wie auch sonst in C++:

    void MyClass::changedFocusSlot(QWidget *old, QWidget *now)
    {
        qobject_cast<QLineEdit*>(now)->setText("New text");
    }
    

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Roman2052
      wrote on last edited by Roman2052
      #8

      Danke. @jsulm
      Ich habe eine line edit, und möchte durch ein Button diese mit einem Wert füllen.
      Dann eine andere lineedit auswählen und wieder durch den Button beschreiben. Unsw.
      Gruß Roman

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Roman2052
        wrote on last edited by Roman2052
        #9

        Normalerweise sage ich ja.@jsulm
        Self. Connect(self. Button, SIGNAL( "clicked()") , set value)
        Def setvalue() ;
        Self. QlineEdit. SetText("test")

        Jetzt habe ich aber keine QlineEdit sondern diese Adresse bzw. Hexa Code.

        jsulmJ 1 Reply Last reply
        0
        • R Roman2052

          Normalerweise sage ich ja.@jsulm
          Self. Connect(self. Button, SIGNAL( "clicked()") , set value)
          Def setvalue() ;
          Self. QlineEdit. SetText("test")

          Jetzt habe ich aber keine QlineEdit sondern diese Adresse bzw. Hexa Code.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #10

          @Roman2052 said in QlineEdit with return to next QlineEdit:

          Jetzt habe ich aber keine QlineEdit sondern diese Adresse bzw. Hexa Code

          Was für eine Adresse?
          Was soll das sein:

          Self. Connect(self. Button, SIGNAL( "clicked()") , set value)
          

          ?
          Kannst du bitte deinen Code posten und nicht etwas was keinen Sinn ergibt?
          Und warum reden wir jetzt von clicked() signal wo doch vorher focusChanged() das Thema war?

          Verbinde einfach einen Slot mit clicked() Signal von deinem Button. In diesem Slot nehme nächstes QLineEdit und schreibe den Text da rein. Falls du in den QLineEdit schreiben willst welches gerade Fokus hat kannst du ja über die QLineEdits iterieren und mit https://doc.qt.io/qt-5/qwidget.html#focus-prop rausfinden welches davon Fokus hat...

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • R Offline
            R Offline
            Roman2052
            wrote on last edited by jsulm
            #11

            hallo @jsulm ,

            sorry war bisschen verwirend.
            hier das skript

            def SetOperator(old,now):
                old.setText(">")
            
            def changedFocusSlot(old, now):
                if (now==None and QApplication.activeWindow()!=None):
                    print "set focus to the active window"
                    QApplication.activeWindow().setFocus()
                w.connect(w.pushButtonKleiner,SIGNAL("clicked()"),partial(SetOperator,old,now))
            
            app = QApplication(sys.argv)
            w = loadUi("RechnenMaxim.ui")
            w.connect(w.NeueAufgabe,SIGNAL("clicked()"),NeueAufgabeGen)
            w.connect(w.LoesungZeigen,SIGNAL("clicked()"),Loesung)
            w.connect(w.radioButtonPlus,SIGNAL("clicked()"),deselectSelection)
            w.connect(w.radioButtonMinus,SIGNAL("clicked()"),deselectSelection)
            w.connect(w.radioButtonMal,SIGNAL("clicked()"),deselectSelection)
            w.connect(w.radioButtonGeteilt,SIGNAL("clicked()"),deselectSelection)
            w.connect(w.radioAdd,SIGNAL("clicked()"),deselectSelection)
            w.connect(w.radioComp,SIGNAL("clicked()"),deselectSelection)
            QObject.connect(app, SIGNAL("focusChanged(QWidget *, QWidget *)"), changedFocusSlot)
            #w.connect(w.pushButtonKleiner,SIGNAL("clicked()"),partial(SetOperator,focus=changedFocusSlot))
             
            w.show()
            sys.exit(app.exec_())
            
            1 Reply Last reply
            0
            • R Offline
              R Offline
              Roman2052
              wrote on last edited by Roman2052
              #12

              Zum ablauf.
              Ich möchte eine LineEdit per maus klick anwählen-> dann auf ein Button drücken-> und die Line soll dan befült werden. Führe ich mein skript aus, wird alles was ich mit der Maus angeklickt habe mit dem Wert befüllt. Die old scheint eine collection zu sein, ist das richtig?

              jsulmJ 1 Reply Last reply
              0
              • R Roman2052

                Zum ablauf.
                Ich möchte eine LineEdit per maus klick anwählen-> dann auf ein Button drücken-> und die Line soll dan befült werden. Führe ich mein skript aus, wird alles was ich mit der Maus angeklickt habe mit dem Wert befüllt. Die old scheint eine collection zu sein, ist das richtig?

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #13

                @Roman2052 Wie ich schon vorgeschlagen habe:
                "Verbinde einfach einen Slot mit clicked() Signal von deinem Button. In diesem Slot nehme nächstes QLineEdit und schreibe den Text da rein. Falls du in den QLineEdit schreiben willst welches gerade Fokus hat kannst du ja über die QLineEdits iterieren und mit https://doc.qt.io/qt-5/qwidget.html#focus-prop rausfinden welches davon Fokus hat..."

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • R Offline
                  R Offline
                  Roman2052
                  wrote on last edited by
                  #14

                  @jsulm Danke
                  Aber wenn doch auf den button clicke dann ist doch der focus nicht mehr auf der LineEdit sondern auf dem Button. Oder habe ich da ein verständniss problem?

                  jsulmJ 1 Reply Last reply
                  0
                  • R Roman2052

                    @jsulm Danke
                    Aber wenn doch auf den button clicke dann ist doch der focus nicht mehr auf der LineEdit sondern auf dem Button. Oder habe ich da ein verständniss problem?

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by jsulm
                    #15

                    @Roman2052 Stimmt. Das wird so nicht funktionieren. Was du dann machen kannst: sobald eines der line edits ausgewählt wird (Fokus) merkst du dir diese Instanz (self.__lastLineEdit = ...) und benutzt die sobald Button angeclickt wird. D.h. der clicked() Signal is mit nur einem Slot verbunden, in diesem Slot benutzt du die zuvor gespeicgerte Referenz zum zuletzt ausgewählten LineEdit.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      Roman2052
                      wrote on last edited by
                      #16

                      @jsulm
                      es scheint noch Irgendwas falsch zu sein :(

                      w.Operator_1.selectionChanged.connect(partial(safeLastLine,1))
                      w.Operator_2.selectionChanged.connect(partial(safeLastLine,2))
                      w.Operator_3.selectionChanged.connect(partial(safeLastLine,3))
                      w.Operator_4.selectionChanged.connect(partial(safeLastLine,4))
                      w.Operator_5.selectionChanged.connect(partial(safeLastLine,5))
                      w.Operator_6.selectionChanged.connect(partial(safeLastLine,6))

                      def safeLastLine(i):
                      nowLine=None
                      nowLine=getattr(w,"Operator_{}".format(i))
                      w.pushButtonKleiner.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonKleiner.text())))
                      w.pushButtonGleich.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGleich.text())))
                      w.pushButtonGroesser.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGroesser.text())))

                      def SetOperator(nowLine,Text):
                      nowLine.setText(Text)
                      nowLine=None

                      Wenn ich jetzt Operator_1 doppelt anklicke und auf den pushButtonKleiner drücke schreibt er mir in den Operator_1 das zeichen "<" rein. Soweit gut.
                      Wenn ich jetzt Operator_2 doppelt anklicke und auf den pushButtonGleich drücke schreibt er mir jetzt in den Operator_1 und in den Operator_2 das zeichen "=" rein.
                      es geht dann immer so weiter.
                      Warum?

                      jsulmJ 1 Reply Last reply
                      0
                      • R Roman2052

                        @jsulm
                        es scheint noch Irgendwas falsch zu sein :(

                        w.Operator_1.selectionChanged.connect(partial(safeLastLine,1))
                        w.Operator_2.selectionChanged.connect(partial(safeLastLine,2))
                        w.Operator_3.selectionChanged.connect(partial(safeLastLine,3))
                        w.Operator_4.selectionChanged.connect(partial(safeLastLine,4))
                        w.Operator_5.selectionChanged.connect(partial(safeLastLine,5))
                        w.Operator_6.selectionChanged.connect(partial(safeLastLine,6))

                        def safeLastLine(i):
                        nowLine=None
                        nowLine=getattr(w,"Operator_{}".format(i))
                        w.pushButtonKleiner.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonKleiner.text())))
                        w.pushButtonGleich.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGleich.text())))
                        w.pushButtonGroesser.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGroesser.text())))

                        def SetOperator(nowLine,Text):
                        nowLine.setText(Text)
                        nowLine=None

                        Wenn ich jetzt Operator_1 doppelt anklicke und auf den pushButtonKleiner drücke schreibt er mir in den Operator_1 das zeichen "<" rein. Soweit gut.
                        Wenn ich jetzt Operator_2 doppelt anklicke und auf den pushButtonGleich drücke schreibt er mir jetzt in den Operator_1 und in den Operator_2 das zeichen "=" rein.
                        es geht dann immer so weiter.
                        Warum?

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #17

                        @Roman2052 Hier ist so einiges falsch. Warum selectionChanged? Das hat ja mit Fokus nchts zu tun.

                        def safeLastLine(i):
                            nowLine=None // sollte das nicht self.nowLine sein - wie willst du sonst später darauf zugreifen?
                            nowLine=getattr(w,"Operator_{}".format(i))
                            # Wieso machst du connect hier? Dir ist  schon klar, dass du jedesmal die connects machst wenn safeLastLine aufgerufen wird? Mach das einmal im Konstruktor
                        w.pushButtonKleiner.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonKleiner.text())))
                        w.pushButtonGleich.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGleich.text())))
                        w.pushButtonGroesser.pressed.connect(partial(SetOperator,nowLine,Text=str(w.pushButtonGroesser.text())))
                        

                        Die Idee ist eigentlich etwas anders:

                        # Das ist der slot für QApplication::focusChanged
                        def onFocusChanged(self, old, now):
                            # Hier sollte noch geprüft werden ob now ein QLineEdit ist und nur dann self.__now setzen
                            self.__now = now
                        
                        # Das ist der slot für die Buttons (musst du dich noch um den Text kümmern)
                        def onButtonClicked(self):
                            if self.__now:
                                self.__now.setText("TEXT")
                        

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          Roman2052
                          wrote on last edited by
                          #18

                          @jsulm
                          DANKE du bist der Beste :)

                          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