Prawie jak w temacie ale rozwinę jaki jest problem
Na poniższym screenie mam taką grupę widgetów - QCheckBox
który po zaznaczeniu ma za zadanie aktywować QLineEdit
Po aktywacji QLineEdit kontrolka jest gotowa do przyjmowania tekstu i teraz najważniejsze. Kontrolka CELOWO ustawiona jest do przyjmowania konkretnych znaków które nie są literami ani liczbami - czyli może przyjmować JEDEN ze znaków -> , ? / : ; " ' ~ `` ! @ # $ % ^ & * ( ) - _ = + [ ] { } spacja
mam napisaną funkcję która sprawdza wprowadzane znaki i jej zadaniem jest przyjąć właściwy znak, a jeżeli znak jest błędny, to wywala komunikat. Funkcja wygląda jak niżej
void myWindowOptionOpenCSV::getTextOnQlineEdit(const QString &txt)
{
regex.setPattern(QString("[^A-Za-z0-9\\p{L}.]"));
match = regex.match(txt);
if(match.hasMatch()){
qDebug()<< "Dobrze" << txt << match.capturedTexts();
}
else{
QMessageBox::information(this,QString(tr("Ważna informacja")),
QString(tr("Dopuszczalny jest jeden znak z podanych poniżej\n, ? / : ; \" \' ~ ` ! @ # $ % ^ & * ( ) - _ = + [ ] { } spacja")),QMessageBox::Ok);
qDebug()<< "Podaj wymagane znaki" << txt;
}
}
i teraz pytanie jest takie.
W jaki sposób w tej funkcji napisać warunek tak, że jak wcisnę klawisz BACKSPACE to ta funkcja NIE MOŻE ZWRACAĆ warunku z okienkiem QMessageBox
?
Bo w sumie kasowanie znaków jest kasowaniem źle wprowadzonego znaku