因项目需要,将输入框的输入格式设置为经纬度的格式,如经度E123°23'45"和纬度N31°54'29",需要考虑数据的有效性,防止非法数据的输入。
主要用 setValidator 检验数据的有效性(用正则表达式),用 setInputMask 限制输入的格式,直接上代码:
// 经度
QLineEdit *lineEdit_Longitude = new QLineEdit(this);
lineEdit_Longitude->setGeometry(100, 100, 180, 80);
QRegExp regExp_Longitude("(E|W)?[0-1][0-7]\\d°[0-5]\\d'[0-5]\\d\"");
lineEdit_Longitude->setValidator(new QRegExpValidator(regExp_Longitude, lineEdit_Longitude));
lineEdit_Longitude->setInputMask("A000°00'00\"");
lineEdit_Longitude->setText("E000°00'00\"");
// 纬度
QLineEdit *lineEdit_Latitude = new QLineEdit(this);
lineEdit_Latitude->setGeometry(100, 200, 180, 80);
QRegExp regExp_Latitude("(N|S)?[0-8]\\d°[0-5]\\d'[0-5]\\d\"");
lineEdit_Latitude->setValidator(new QRegExpValidator(regExp_Latitude, lineEdit_Latitude));
lineEdit_Latitude->setInputMask("A00°00'00\"");
lineEdit_Latitude->setText("N00°00'00\"");