shep
02-15-2010, 05:15 PM
This is probably lame, but I thought I'd share my method for making a lineEdit into a numeric only input.
void MainWindow::on_lineEdit_textChanged(QString )
{
QString qNewValue = ui->lineEdit->text();
bool ok;
double dTest = qNewValue.toDouble(&ok);
int dotCnt=0;
if (!ok)
{
QString qStripped;
for (int i=0; i< qNewValue.length(); i++ )
{
QString subStr = qNewValue.at(i);
QString sValid = "1234567890.";
if (subStr.toLower() == ":")
{
subStr = ".";
}
if (subStr.toLower() == "?")
{
subStr = ".";
}
if (subStr==".")
{
dotCnt++;
}
if (subStr.toLower() == "q")
{
subStr = "1";
}
if (subStr.toLower() == "w")
{
subStr = "2";
}
if (subStr.toLower() == "e")
{
subStr = "3";
}
if (subStr.toLower() == "r")
{
subStr = "4";
}
if (subStr.toLower() == "t")
{
subStr = "5";
}
if (subStr.toLower() == "y")
{
subStr = "6";
}
if (subStr.toLower() == "u")
{
subStr = "7";
}
if (subStr.toLower() == "i")
{
subStr = "8";
}
if (subStr.toLower() == "o")
{
subStr = "9";
}
if (subStr.toLower() == "p")
{
subStr = "0";
}
if ( (sValid.contains( subStr)) && (dotCnt <= 1))
{
qStripped.append(subStr);
}
}
ui->lineEdit->setText(qStripped);
}
}
Hopes this helps someone.
void MainWindow::on_lineEdit_textChanged(QString )
{
QString qNewValue = ui->lineEdit->text();
bool ok;
double dTest = qNewValue.toDouble(&ok);
int dotCnt=0;
if (!ok)
{
QString qStripped;
for (int i=0; i< qNewValue.length(); i++ )
{
QString subStr = qNewValue.at(i);
QString sValid = "1234567890.";
if (subStr.toLower() == ":")
{
subStr = ".";
}
if (subStr.toLower() == "?")
{
subStr = ".";
}
if (subStr==".")
{
dotCnt++;
}
if (subStr.toLower() == "q")
{
subStr = "1";
}
if (subStr.toLower() == "w")
{
subStr = "2";
}
if (subStr.toLower() == "e")
{
subStr = "3";
}
if (subStr.toLower() == "r")
{
subStr = "4";
}
if (subStr.toLower() == "t")
{
subStr = "5";
}
if (subStr.toLower() == "y")
{
subStr = "6";
}
if (subStr.toLower() == "u")
{
subStr = "7";
}
if (subStr.toLower() == "i")
{
subStr = "8";
}
if (subStr.toLower() == "o")
{
subStr = "9";
}
if (subStr.toLower() == "p")
{
subStr = "0";
}
if ( (sValid.contains( subStr)) && (dotCnt <= 1))
{
qStripped.append(subStr);
}
}
ui->lineEdit->setText(qStripped);
}
}
Hopes this helps someone.