2016-04-18 9 views
0

入力時に大文字を返す関数を呼び出すqlineeditの検証を簡素化する必要があります。Qtの次のコードを簡略化することはできますか?

void dg_cliente::on_lineEdit_4_textChanged(const QString &arg1) 
{ 

    Cls_Validaciones *Valido = new Cls_Validaciones; 

    ui->lineEdit_4->setText(Valido->Validar_Mayuscula(arg1)); 

} 

コードが冗長である、など、lineEdit5lineEdit6lineEdit7のために非常に似ています。私はこれを持っています。冗長性を取り除くためにこれを行うより良い方法はありますか?

+1

あなたは 'QValidator'クラスについてよく知っていますか? –

答えて

1

私のようにあなたの質問を解釈:どのように私は、実際の信号の送信者であるウィジェットを認識することができます

あなたのスロットにはsender()の機能があります。

void DlgClient::onLineEditTextChanged(const QString &arg1) 
{ 
    QLineEdit* pLineEditSender = qobject_cast<QLineEdit*>(sender()); 
    if (pLineEditSender) // also verify that is required type of sender 
    { 
     // FYI: setText also signals textChanged 
     // make sure the code is not looping here 
     // so bool m_forcedSetText initially set false 

     if (! m_forcedSetText) 
     { 
      m_forcedSetText = true; 
      pLineEditSender->setText( myTransform(arg1)); 
     } 
     else 
      m_forcedSetText = false; 
    } 
} 

P.S.コメントに示唆されているような他のタイプのソリューションが良いでしょうか?しかし答えは、あなたが求めるものに明白です。 sender()の情報は、モジュール化のOOPの原則に違反していることを警告しますが、場合によってはその機能はまだ有効です。

関連する問題