QLineEdit只可输入16进制并且每个字节间增加1个空格

本文介绍了如何设置QLineEdit控件仅允许输入字母、数字和空格,并设置长度限制,同时展示了文本变化处理和长度更新的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/设置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());
//}

}


  1. A-Fa-f0-9 ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值