0

委任された QTableWidget にイニシャルを入力するためのカスタマイズされた QLineEdit エディターがあります。入力マスクを使用せずにフォーカスを離れたら、強制的に大文字にしたいと思います (self.setInputMask(">AA") を使用しない fi)。

注:
- QLineEdit テキスト呼び出されると大文字に変更されます
- フォーカスが失われた場合、新しい大文字テキストはQLineEdit に反映されません

以下のカスタム クラスを参照してください。

class InitialsEditor(QLineEdit):
    # The custom editor for editing the Initials

    # a signal to tell the delegate when we have finished editing
    editingFinished = Signal()

    def __init__(self, parent=None):
            # Initialize the editor object
            super(InitialsEditor, self).__init__(parent)
            self.setAutoFillBackground(True)
            rx = QRegExp("[A-Z]{1,2}") # validate A-Z with 2 characters
            rx.setCaseSensitivity(Qt.CaseInsensitive)
            self.setValidator(QRegExpValidator(rx, self)) # limit the input to A-Z
            #self.setMaxLength(2) # limit the max char length
            #self.setInputMask(">AA")

    def focusOutEvent(self, event):
            # Once focus is lost, tell the delegate we're done editing
            self.setText(self.text().upper()) # make the text uppercase
            print(self.text()) # returns the correct self.text() in uppercase...
            self.editingFinished.emit()
4

1 に答える 1