QLineEdit und Darstellung von "10.000,00 €"

Alles rund um die Programmierung mit Qt
Antworten
GiJay
Beiträge: 2
Registriert: 13. Dezember 2022 15:02

QLineEdit und Darstellung von "10.000,00 €"

Beitrag von GiJay »

Moin,

ich komme mit dem Validator bzw InputMask nicht zu recht. Ich schreibe an einem kleinen Tool für eine Maklerin und da sollen eine paar Daten in eine SQLite-DB eingetragen werden. Das alles funktioniert (über Mapper) einwandfrei. Allein die Darstellung der Zahlen will mir nicht gelingen.

In einem QLineEdit-Widget möchte ich 1532,50 eingeben und wenn ich das Feld verlasse, möchte ich dort 1.532,50 € stehen habe. Ich verzeifel dran ...
Die InputMask habe ich ausgeklammert, da diese Leerzeichen einbaut.

Ich arbeite übrigens mit PyQt6. Wer kann mir helfen? Schon mal "Danke" fürs lesen !

Code: Alles auswählen

# Miete
        finanz_miete_text = QLabel("Miete max.: ")
        box_kapital_layout.addWidget(finanz_miete_text)
        self.miete = QLineEdit()
        self.miete.setValidator(QDoubleValidator(0.01, 99999.99, 2))
        #self.miete.setInputMask("00000,00 €")
        self.miete.setAlignment(Qt.AlignmentFlag.AlignRight)
        box_kapital_layout.addWidget(self.miete)

        # Kaufpreis
        finanz_kauf_text = QLabel("Kaufpreis max. : ")
        box_kapital_layout.addWidget(finanz_kauf_text)
        self.kaufpreis = QLineEdit()
        self.kaufpreis.setAlignment(Qt.AlignmentFlag.AlignRight)
        box_kapital_layout.addWidget(self.kaufpreis)
Bronski
Beiträge: 44
Registriert: 10. Oktober 2008 13:46

Re: QLineEdit und Darstellung von "10.000,00 €"

Beitrag von Bronski »

Ich beherrsche leider kein Python, daher kann ich dir keine Code-Beispiele geben.

Ich würde eine Slot - Funktion programmieren und sie via QObject::connect mit einem der Signale QLineEdit (z.B. QLineEdit::textEdited(const QString &text)) verbinden. Das heißt dein Code miuss sich in einer Methode einer Klasse befinden,die sich von QObject ableitet.
Desweiteren würde ich ein eigenes Signal erstellen mit QString als Parameter für die Rückgabe und dieses mit dem setText(const QString &) -Slot QLineEdit Widget verbinden

siehe:
https://doc.qt.io/qt-6/signalsandslots.html

Den übergebenen String kannst Du dann mit der replace Methode von QString bearbeiten und mit der append - Methode von QString kannst Du das € Zeichen anhängen.
Danach das Signal für die Rückgabe auslösen

Ich hoffe ich konnte dir helfen.
Antworten