2011-02-15 5 views
0

QT4에서 일부 입력의 유효성 검사를 시도하는 데 문제가 있습니다.양식 입력 유효성 검사, 다중 초점 문제

2 개의 텍스트 편집 필드가있는 양식이 있습니다. 한 필드가 포커스를 잃었을 때 필드가 비어 있는지 확인하고, 그렇다면 사용자에게 경고합니다.

void newconsole::on_nameEdit_lostFocus() 
{ 
    if (this->ui->nameEdit->text().size() < 1) 
    { 
     QMessageBox b; 
     b.setText("Name must be longer than 0 characters."); 
     b.setIcon(QMessageBox::Information); 
     b.setStandardButtons(QMessageBox::Ok); 
     b.show(); 
    } 
} 

void newconsole::on_fileextensionEdit_lostFocus() 
{ 
    if (this->ui->fileextensionEdit->text().size() < 1) 
    { 
     QMessageBox b; 
     b.setText("File extension must be longer than 0 characters."); 
     b.setIcon(QMessageBox::Information); 
     b.setStandardButtons(QMessageBox::Ok); 
     b.show(); 
    } 
} 

내 문제는 내가 (nameEdit를) 폼을 실행하고 첫 번째 텍스트 편집기에 초점을 잃을 때이 두 신호에서 메시지 박스를 얻을 수 있습니다 :

여기 내 코드입니다. 어떤 제안?

+1

당신이 입력 검증을 위해 [QValidator] (http://doc.qt.nokia.com/latest/qvalidator.html)를 사용하여 생각 해 봤나에 관하여? – sashoalm

답변

3

내 생각은 다음과 같습니다

  1. 하여 편집 상자

    양식을 서로 가깝게 위치 및/또는 탭 순서에서 서로 옆에;
  2. 두 편집 상자는 기본적으로 비어 있습니다.
  3. 에서 이름을 편집 할 때 파일 확장자 번호 인 다음 위젯으로 첫 번째 메시지 상자가 팝업됩니다.
  4. 이 메시지 상자로 인해 fileextensionEdit도 포커스를 잃게되고 비어있어 두 번째 메시지 상자가 표시됩니다. 이 도움이

희망,

+0

QT 디자이너에서 탭 순서를 변경하는 방법은 무엇입니까? 나는 그렇게 할 곳을 찾을 수없는 것 같습니다. –

+0

QWidget :: setTabOrder : http://doc.qt.nokia.com/latest/qwidget.html#setTabOrder –

+0

QT Designer (4.6.3)의 경우 : 편집 -> 탭 순서 편집 – zkunov