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 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