VirtualKeyboard, Program crash when input out of range char to a QLineEdit with validator
-
@SGaist said in VirtualKeyboard, Program crash when input out of range char to a QLineEdit with validator:
QRegularExpressionValidator
Thanks, SGaist.
And Yes. I tryed QRegularExpressionValidator and QIntValidator, still got the same result:m_pEdit->setValidator(new QRegularExpressionValidator(QRegularExpression(u8"^([0-9]|[1-9][0-9]{1,2})"))); // m_pEdit->setValidator(new QIntValidator(0, 100));
And I noticed that, if I directly put the QLineEdit on MainWindow other than MyDialog, everything is OK.
-
Hi and welcome to devnet,
Can you show the stack trace of your crash ?
Do you have the same issue if you use a QRegularExpressionValidator ? -
What if you use the following:
MyDialog::MyDialog(QWidget *parent): QDialog(parent) { m_pEdit = new QLineEdit(this); m_pEdit->setValidator(new QRegularExpressionValidator(QRegExp(u8"^([0-9]|[1-9][0-9]{1,2})"))); } MyDialog::~MyDialog() { }
?
-
This problem also exists in 5.15.2,As long as it is a pop-up window and uses both virtual keyboard and physical keyboard, it will crash
-
Which compiler are you using ?
-
What if you use the following:
MyDialog::MyDialog(QWidget *parent): QDialog(parent) { m_pEdit = new QLineEdit(this); m_pEdit->setValidator(new QRegularExpressionValidator(QRegExp(u8"^([0-9]|[1-9][0-9]{1,2})"))); } MyDialog::~MyDialog() { }
?
@SGaist
Thanks.
The issue still exists after set the parent of MyDialog.
The compiler I'm using is Microsoft Visual C++ compiler 14.0.
I also tried MinGW 8.1.0 on Windows 10, got the same issue.But on Ubuntu 18.04, the same program, built by Qt5.12.10 and g++, works fine. I think it may be a platfrom specific bug.
-
Might be indeed.
One last test, what happens if you use open in place of exec ?
-
Then I would say a bug report is the next step.
-
The issue is a known bug QTBUG-9304.
Unfortunately, it will not be fixed for Qt5.12. -
From the looks of the patch, you should be able to port it to 5.12 and build the module yourself with it.