2016-10-11 4 views
0

Qt에서 QPlainTextEdit을 필드 항목으로 사용하고 있습니다. 특정 문자를 제한하거나 무시할 수있는 방법이 있습니까?QPlainTextEdit 제한적 문자

예를 들어, 입력 키 (플랫폼에 따라 \n 또는 \r\n)를 무시하고 싶습니다.

+3

'\ n'과'\ r \ n '은 키가 아니며 키 누르기에 삽입되는 텍스트입니다. 특정 키 입력을 무시하는 한 가지 방법은 이벤트 필터를 설치하는 것입니다. 물론 사용자는 여전히 개행 문자를 붙여 넣을 수 있습니다. 따라서 입력이 끝나면 텍스트를 필터링해야합니다. 그리고 라인 엔딩을 정말로 제거 할 것인지 스스로에게 물어야합니다. 대신에'QLineEdit'을 원한다고 생각합니다! –

답변

1

textChanged() 이벤트가 끝나면 정규식으로 설정 한 후 위의 @Kuba Ober에서 주석을 읽었습니다. 예, 간단한 대답은 제가 찾던 동작이 정확히 QLineEdit 인 것을 잊었습니다!

+0

개행 문자를'QLineEdit'에 붙여 넣을 수 있기 때문에, 다른 코드가 그 코드에 대처할 수 없다면,'text()'에서 얻은 값에서 그 코드를 제거해야합니다. OTOH, 스스로에게 물어보십시오 : 제한이 절대적으로 필요합니까? 때로는 그렇습니다. 그러나 텍스트를 사용하는 코드가 줄 바꿈을 렌더링하는 방법을 알고 있지만 컨트롤이 한 줄로되어있는 몇 가지 소프트웨어를 알고 있으며이를 해결할 수있는 유일한 방법은 텍스트를 줄 바꿈으로 텍스트를 복사하여 붙여 넣는 것입니다. 메모장. 이러한 응용 프로그램은이 해결 방법 없이는 기능이 거의 없습니다. 따라서 QPlainTextEdit를 크게 할인하지 마십시오. –

+0

이 상황에서는 단순히 'textChanged'에서 JSON 조회에 대한 입력과 일치하는 양식의 항목으로 사용됩니다. 나는 사람들이 _done_에있을 때 본능적으로 입력을하는 사람들이라는 것을 알았지 만 개행은 일치를 깨뜨린다. 단순히이 문제를 해결하면이 문제가 해결됩니다. 그래도 좋은 경고. – sam

+0

당신의 경우에는'QLineEdit'가 완벽합니다 * 그리고 *'text()'에서 줄 바꿈을 제거해야합니다. 그래서 어떤 종류의 취약점이되지 않도록하거나 그 코드에 버그를 드러내지 않을 것입니다. 그러한 입력에 개행을 기대하지 않습니다. –

관련 문제