1

編集行をすぐに検証したい。編集行フィールドを離れた直後に、入力した値が間違っている可能性があることをユーザーに伝えたいと思います。

そこで、ラインエディットをeditingFinished()シグナルに接続します。ただし、問題は、ライン編集の外側をクリックしたとき、たとえばダイアログをクリックしたときなどに、信号が出力されないことです。ダイアログで他の行編集をクリックすると出力されます。そのため、編集行の外側をクリックするたびに発生する信号を探しています。どうすればこれを達成できますか?

connect(mLineEdit, SIGNAL(editingFinished()), this, SLOT(Validate()))

MyDlg::Validate()
{
     QString text = mLineEdit->text();
     bool isValid = check_if_valid(text);
     if(!isValid)
         // set the color of edit line to be red        
}
4

1 に答える 1

2

まず、QValidator行編集で実装を使用して検証を実行することを検討してください ( QIntValidatorQDoubleValidator、またはQRegExpValidator)。を使用してバリデータをインストールできますQLineEdit::setValidator(QValidator*)。これらのバリデータのいずれかがうまくいかない場合は、QValidatorの実装をサブクラス化して提供することで独自のvalidateバリデータを作成し、編集行に独自のカスタム バリデータをインストールすることを検討することをお勧めします。

上記のすべてに失敗した場合は、上記のように続行できますが、textChanged(const QString&)シグナルまたはシグナルのいずれかをリッスンする必要がありますtextEdited(const QString&)(前者は行編集テキストがプログラムで変更された場合でも出力されますが、後者はそうではありません)。

于 2012-12-05T17:52:46.740 に答える