2013-02-21 3 views
1

QLineEdit을 사용하여 작업 할 정수 값을 가져 오려고합니다. 내 문제는 텍스트가 입력 될 때까지 기다리고 싶다는 것이다. 나는이 시도 첫 번째 점에 대한 enter image description hereQLineEdit 텍스트가 변경 될 때까지 기다림

그것은 작동하지 않았다 : 나는 자동으로처럼 QEditLine를 클릭 한 후 삭제됩니다 시작에서 기본 텍스트를 줄 수있는 경우에도 좋은 것

...... 
int num =0; 
QLineEdit *qtest = new QLineEdit(); 
........ 
mailayout->addWiget(qtest);// when I use the while loop the QLineEdit won't be added !! 
while(num ==0){ 
    num = qtest->text.toInt(); 
} 
............. 

프로그램이 while 루프에 머무르면 어떤 아이디어가 잘못 되었습니까?

+0

게시 한 코드에서 "num"은 "0"이외의 값이 아니므로 루프가 자연히 광고 무한정 계속됩니다. QLineEdit에서 숫자를 파싱하는 것과 같이 "num"을 다르게하려면 뭔가해야합니다. 건배! –

+0

num은 루프에서 해당 값을 변경합니다 ?? – Engine

+0

@Engine 'QLineEdit'은 텍스트가 입력되는 이벤트 대기열을 사용하지만 while 루프에서 실행이 중단되어 이벤트 대기열을 처리 할 수 ​​없기 때문에 불가능합니다. – cmannett85

답변

6

사용자가 아무 것도 입력하지 않은 경우 텍스트를 표시하려면 setPlaceholderTest(const QString&)을 사용하십시오.

QLineEdit을 폴링하지 마십시오. Qt이므로 신호를 사용하십시오.

connect(qtest, SIGNAL(editingFinished()), 
     someContainerObj, SLOT(myLineEditSlot())); 
... 
ContainerObj::myLineEditSlot() 
{ 
    int num = qtest->text().toInt(); 
    ... 
} 
+0

응답 setPlaceholderText를 사용해 주셔서 감사합니다. 그러나이 두 번째 방법은 여전히 ​​작동하지 않습니다. – Engine

+0

어떻게 작동하지 않습니까? 어떻게 코딩 했습니까? 예제 코드를 업데이트하여 수행 한 작업을 볼 수 있습니다. – cmannett85

+0

@ cmannnett85 방금 내 질문을 편집했습니다. – Engine

관련 문제