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.0k 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 Offline
    R Offline
    Roman2052
    wrote on last edited by Roman2052
    #1

    Hallo Leute,
    ich bin neu hier und auch noch nicht so fit :)
    Ich möchte gerne in einer QLineEdit was eintragen und durch das drücken von Enter zur nächsten QlineEdit gehen. Ich habe schon probiert eine Schleife in Python zu machen mit dem Signal "returnpressed()" aber nicht hinbekommen.
    Auserdem Ist es möglich, wenn ich in eine QlineEdit reingeklickt habe diese Qline.. an eine Function weiter zu geben?
    Danke euch schon mal.
    Gruß

    1 Reply Last reply
    0
    • O Offline
      O Offline
      ondrejandrej
      wrote on last edited by
      #2

      Dazu brauchst du keine Schleife, sondern nur einen Slot, der mit returnPressed() verbunden ist.

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

        Hallo,
        wie gesagt ich bin noch nicht fit :)
        w.connect(w.Operator_1,SIGNAL("returnPressed()"),setNextOp)
        def setNextOp():
        w.Operator_2.setCursorPosition()
        w.Operator_2.selectAll()

        Wäre das so richtig?
        Zur erklärung was ich möchte,
        Ich habe 15 QlineEdit, ich möchte durch das drücken von der Returntaste, mich durch die Felder bewegen.
        Zusäzlich möchte die Qline in der ich mich befinde an eine weiter function übergeben.

        Danke!
        Gruß

        und im

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

          Ich habe das jetzt so gemach
          w.connect(w.Operator_1,SIGNAL("returnPressed()"), setNextOp)
          def setNextOp():
          w.Operator_2.setFocus()
          da ich aber 15 Qlineedit ("Operator 1 - 15") habe muss ich das irgendwie Dynamisch hinbekommen.
          Hat jemand eine Idee?
          Dank Und Gruß
          Roman

          Pl45m4P 1 Reply Last reply
          0
          • R Roman2052

            Ich habe das jetzt so gemach
            w.connect(w.Operator_1,SIGNAL("returnPressed()"), setNextOp)
            def setNextOp():
            w.Operator_2.setFocus()
            da ich aber 15 Qlineedit ("Operator 1 - 15") habe muss ich das irgendwie Dynamisch hinbekommen.
            Hat jemand eine Idee?
            Dank Und Gruß
            Roman

            Pl45m4P Offline
            Pl45m4P Offline
            Pl45m4
            wrote on last edited by
            #5

            @Roman2052

            Ist das nicht dasselbe wie wenn man Tab drückt?
            Man könnte entweder bei Enter ein Tab KeyEvent an das Widget senden oder du packst die QLineEdits in einen Container und iterierst da durch. Den aktuellen Index kannst du dir dann irgendwo speichern und beim letzten dann theoretisch wieder auf das erste Widget zurück springen. Bei Enter dann einfach um eins erhöhen und das Widget an der Stelle fokussieren.
            Das aktuelle Widget wäre dann das focusWidget() oder das QLineEdit an der Stelle von dem aktuellen Iterator im Container.


            If debugging is the process of removing software bugs, then programming must be the process of putting them in.

            ~E. W. Dijkstra

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

              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 1 Reply Last reply
              0
              • 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