0

OK、これは私を狂わせています。些細なことだと思いますが、しばらく答えを探していたのですが、わかりません。額は平らになると思います。

PythonでQt4ダイアログを設計しています。QDesignerを介してコードを生成し、システムに4つの入力があります。

  • QLineEdit(空白にすることはできません)
  • QPlainTextEdit
  • QLineEdit(空白にすることはできません)
  • QComboBox(オプションの1つを選択する必要があります)

質問:フィールドを「必須」にするフラグはありますか?強制的に非空白にしますか?

QRegExpValidatorを使用しようとしましたが、これが正しいかどうかわかりません。

    regex = QRegExp(r"\\S+")        
    self.optionName.setValidator(QRegExpValidator(regex,self))

明らかな何かが欠けていることはわかっています(self.optionName.setRequired()関数にしないでください)。

アップデート

このクラスを追加しました:

from PyQt4 import QtGui

class ValidStringLength(QtGui.QValidator):
    def __init__(self, min, max, parent):
        QtGui.QValidator.__init__(self, parent)

        self.min = min
        self.max = max

    def validate(self, s, pos):
        if self.max > -1 and len(s) > self.max:
            return (QValidator.Invalid, pos)

        if self.min > -1 and len(s) < self.min:
            return (QValidator.Intermediate, pos)

        return (QValidator.Acceptable, pos)

    def fixup(self, s):
        pass

このように呼んでください:

    self.optionName.setValidator(ValidStringLength(2, 8, self.optionName))
    self.criteriaName.setValidator(ValidStringLength(2, 8, self.criteriaName))

クラスのvalidate()関数にブレークポイントが設定されていますが、それが呼び出されることはありません。

私は何か基本的なものが欠けていますか?

TIA

マイク

4

3 に答える 3

1

デフォルト値は空白であるため、それができるかどうかはわかりません。つまり、行編集は最初から無効になりますが、決してそうではありません。ただの予感。

とにかく、ボタン間で連携したいので、各データが変更されたときにグローバルな状態をチェックし、グローバルな状態が受け入れられるまでOKボタンを有効/無効にする何かを書く方が簡単ではないでしょうか?

于 2009-10-20T19:00:09.120 に答える
0

おそらく入力マスクを設定しますか?

http://doc.trolltech.com/4.4/qlineedit.html#inputMas-prop

行編集の入力が入力マスクに従っていない場合、「hasAcceptableInput()」は false を返します。

http://doc.trolltech.com/4.4/qlineedit.html#acceptableInput-prop

バリデーターと組み合わせて使用​​することもできます。

于 2009-10-20T18:51:34.783 に答える
0

バリデーターについて、またはそれらがトリガーされない理由についてはあまり知りません。ただし、このようなことをしようとしている場合は、必要な項目のいずれかが変更されたときに呼び出される検証スロットをダイアログに作成します。そのスロットで、アイテムの状態を確認し、すべてのアイテムの有効性に基づいて承認ボタンを有効/無効にします。また、無効なアイテムを示すために何かをしようとします。たとえば、それらを赤で囲みます。

これを行う別の方法は、受け入れ関数をオーバーライドしてそこでチェックを行い、すべてが有効な場合にのみ親の受け入れ関数を呼び出すことです。

于 2009-09-28T19:17:56.790 に答える