사용자가 단어 사이에 하나의 공백 만 입력 할 수 있도록 QRegExpValidator를 설정 한 QLineEdit이 있습니다.
이제 사용자가 둘 이상의 공백을 입력하려고 할 때마다 QLineEdit의 툴팁이 나타나야하지만, 구현 방법이 없습니다.Qt : 잘못된 입력에 대한 툴팁
고맙습니다 :)
사용자가 단어 사이에 하나의 공백 만 입력 할 수 있도록 QRegExpValidator를 설정 한 QLineEdit이 있습니다.
이제 사용자가 둘 이상의 공백을 입력하려고 할 때마다 QLineEdit의 툴팁이 나타나야하지만, 구현 방법이 없습니다.Qt : 잘못된 입력에 대한 툴팁
고맙습니다 :)
원하는대로 수행 할 수있는 직접적인 방법이없는 것처럼 보입니다. 위에서 수행 할 수있는 한 가지 방법은 QLineEdit
의 textChanged()
신호입니다. 그런 다음 QRegExp::exactMatch()
함수를 사용하여 정규 표현식과 비교하여 해당 문자열을 확인할 수 있습니다. 일치하지 않으면 툴팁을 표시하십시오.
신호를 연결
.. 여기 슬롯이 간다...
connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(onTextChanged(QString)));
...
..
void MainWindow::onTextChanged(QString text)
{
QRegExp regExp;
regExp.setPattern("[^0-9]*"); // For example I have taken simpler regex..
if(regExp.exactMatch(text))
{
m_correctText = text; // Correct text so far..
QToolTip::hideText();
}
else
{
QPoint point = QPoint(geometry().left() + ui->lineEdit->geometry().left(),
geometry().top() + ui->lineEdit->geometry().bottom());
ui->lineEdit->setText(m_correctText); // Reset previous text..
QToolTip::showText(point,"Cannot enter number..");
}
}
나는 당신의 아이디어를 가지고
내가 툴팁을 표시하기위한 명시적인 API를 기억하지 않습니다. 원하는 결과를 얻으려면 맞춤 도구 창 (예 : 부모가없는 QWidget
)이 표시되어야합니다.
표준 툴팁처럼 자신 만의 팝업 창을 스타일링하려면 QStyle
에 해당하는 내용이 있어야합니다. 의심 스럽다면 툴팁을 렌더링하는 Qt 소스 코드를 읽으십시오. 그러면 사용할 스타일 요소를 알 수 있습니다.
하지만이 방법 두 가지 문제가있을 것입니다 : 1) 내가 사용하고 있습니다 사용자가 잘못된 문자열을 입력하는 것을 원하지 않는다는 것을 의미하는 QRegExpValidator, 사용자가 잘못된 입력을 입력 할 수 있습니다. 2) 프로그래밍 방식으로 툴팁을 표시하는 방법을 모르겠습니다. D – Jaydeep
@Jaydeep : 해결할 수 있습니다. 항상 올바른 문자열을 다른 변수 인'm_correctText'에 저장할 수 있습니다. regex match가 실패 할 때마다, 당신은'QLineEdit :: setText (m_correctText)'를 사용하여 리셋한다. Ya는 tooltip에 대해 [check this] (http://doc.qt.nokia.com/4.7-snapshot/widgets-tooltips.html) .. 또 다른 제안은'QLineEdit' 컨트롤의 오른쪽에 위치한 빨간색 글자로'QLabel'을 보여주는 것입니다. :) – Ammar
@ Jaydeep : 예제 코드를 추가하여 답변을 업데이트했습니다. :) – Ammar