2017-01-18 25 views

答えて

0

あなたはあなたのビューでのアイテムのためのカスタムデリゲートを作成し、不適切にフォーマットされたデータを挿入しようとする試みを傍受することでsetModelDataメソッドをオーバーライドすることができます:カスタムデリゲートが実装されている

​​

たら、あなたがする必要があります

view->setItemDelegate(new MyDelegate(view)); 
0

私が参照しているデータ形式は検証の一種であると仮定しています。その場合、 これを行う別の方法は、実際のカスタムを追加することですMyValidator -> QValidator-> implies from derived)。あなたがメンバーとしてデリゲートにMyValidatorオブジェクトをインスタンス化する必要があり、その後、ラインエディタ上でバリデータを設定する以外、@ドミトリーのコードは、同じようになります:あなたは純粋を実装する必要がありMyValidatorクラスで

myValidator = new MyValidator; // some args if you need ... 
lineEdit->setValidator (&myValidator); 

virtual QValidator::State validate(QString& input, int& pos) constメソッド。QValidatorクラスの。すべての書式設定と検証規則をそこに入れることができます。

ユーザーは、カスタムルールに従って適切な形式でデータを入力せずにラインエディタから出ることはできません。他のメッセージボックスを呼び出す必要はありません。

私はほぼ同じ要件を満たしていました。

+0

私は行の編集について知っていますが、テーブルビューでそれを実装する方法 –

+0

@Dmitryの答えを使用してカスタムデリゲートを作成します。さらに、 'createEditor'メソッドをオーバーライドしてから、私の答えに示されているように、' validate() 'メソッドを提供しながら、カスタムの' QValidator'を作成したエディタにアタッチしてください。 – NameRakes

関連する問題