/设置QLineEdit鼠标右键无菜单、只可输入a-fA-F0-9及空格/
ui.m_DataLineEdit->setContextMenuPolicy(Qt::NoContextMenu);
ui.m_DataLineEdit->setValidator(new QRegExpValidator(QRegExp("1+$"), this));//注意:9后面有个空格
/关联信号槽/
connect(ui.m_DataLineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(DataLineEditSlot(const QString&)));
/数据编辑区编辑信号槽/
void TestView::DataLineEditSlot(const QString& str)
{
QString arg0 = str;
arg0 = arg0.replace(" “, “”); //移除空格
if (arg0.length() == 0)
{
ui.m_DataLineEdit->setText(”");
ui.m_DataLengthSpinBox->setValue(0);
return;
}
//int flag = 1;
QString arg1 = str;
//QString arg1 = str;
//if (flag) //如果在就可以输入
//{
// flag = 0;
if (arg1.length() < 2)
{
QString on_lineEdit_textChanged_to2 = arg1.toUpper();
ui.m_DataLineEdit->setText(on_lineEdit_textChanged_to2);
QStringList strList0 = on_lineEdit_textChanged_to2.trimmed().split(" ");
ui.m_DataLengthSpinBox->setValue(strList0.size());
return;
}
QString on_lineEdit_textChanged_Temp = arg1.toUpper();//先将读到的字符转换为大写
//去掉字符中所有的空格
string on_lineEdit_textChanged_Temp_String = on_lineEdit_textChanged_Temp.toStdString();
string::iterator it;
for (it = on_lineEdit_textChanged_Temp_String.begin(); it < on_lineEdit_textChanged_Temp_String.end(); it++)
{
if (*it == ' ')
{
on_lineEdit_textChanged_Temp_String.erase(it);
it--;
/*
it--很重要,因为使用erase()删除it指向的字符后,后面的字符就移了过来,
it指向的位置就被后一个字符填充了,而for语句最后的it++,又使it向后移
了一个位置,所以就忽略掉了填充过来的这个字符。在这加上it--后就和for
语句的it++抵消了,使迭代器能够访问所有的字符。
*/
}
}
on_lineEdit_textChanged_Temp = QString::fromStdString(on_lineEdit_textChanged_Temp_String);
//每隔两个字符就插入一个空格
int mo = (on_lineEdit_textChanged_Temp.length() / 2);
int yu = (on_lineEdit_textChanged_Temp.length() % 2);
if (yu)
{
for (int i = 1; i <= mo; i++)
{
on_lineEdit_textChanged_Temp.insert(((2 * i) + (i - 1)), " ");
}
}
else
{ //将当前的值输入的值的最后一个转为
QString Buff_Temp = arg1.toUpper();
ui.m_DataLineEdit->setText(Buff_Temp);
QStringList strList = Buff_Temp.trimmed().split(" ");
ui.m_DataLengthSpinBox->setValue(strList.size());
return;
}
ui.m_DataLineEdit->setText(on_lineEdit_textChanged_Temp);
QStringList strList2 = on_lineEdit_textChanged_Temp.trimmed().split(" ");
ui.m_DataLengthSpinBox->setValue(strList2.size());
//}
//else {
// QString Delete_End_QString = arg1.left(arg1.length() - 1);//shan删除最后一个字符//不再我的QString内的字符
// ui.m_DataLineEdit->setText(Delete_End_QString);
// QStringList strList3 = Delete_End_QString.split(" ");
// ui.m_DataLengthSpinBox->setValue(strList3.size());
//}
}
A-Fa-f0-9 ↩︎