Qt的lineEdit如何只接收int数据

waiting567 2011-03-22 09:43:42
能否设置Qt的lineEdit控件,使其只能接收int型数据?
...全文
864 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbzhang800 2011-05-17
  • 打赏
  • 举报
回复
这东西自己控制还是很复杂的,用正则也很难。特别涉及到locale时:

比如:很简单一个整数 "1000",在有的国家,输入“1,000”,而有的国家则是“1.000”

自己来处理这些东西是很恐怖的 ^_^ ,所以最好直接用QSpinBox 或 QValidator 等现成的东西
yzhj2005 2011-03-30
  • 打赏
  • 举报
回复
QLineEdit *lineEdit = new QLineEdit();
QRegExp regExp("[-]{0,1}[0-9]+");
lineEdit->setValidator(new QRegExpValidator(regExp, this));
coblan 2011-03-28
  • 打赏
  • 举报
回复
正则表达式 Qregexp是最直接和推介的方法。。
但是C++就是C++,一切都可以定制。除了上面朋友说的方法外。
最强大,当然也是有点麻烦的是,通过KeyEvent来限制输入为int类型,比如安装个installEvenFilter。呵呵。
法尔我给他 2011-03-26
  • 打赏
  • 举报
回复
个人比较喜欢用正则表达式,调整起来方便,调用也方便
残剑待飞雪 2011-03-25
  • 打赏
  • 举报
回复
监测一下textModified,想怎么控制都行,你可只让输入0,也可以只让输入1 。。。。
shraky 2011-03-24
  • 打赏
  • 举报
回复
ui设计貌似有输入类型的选项,如果你不是纯编写代码的话。
aoxuehan0424 2011-03-24
  • 打赏
  • 举报
回复
QLineEdit *lineEdit = new QLineEdit();
QRegExp regExp("[-]{0,1}[0-9]+");
lineEdit->setValidator(new QRegExpValidator(regExp, this));

就是这个了。
第一行不说了
第二行 新建一个正则表达式,只接受int 包括正负数
第三行是设置lineedit格式!
大熊哥V5 2011-03-23
  • 打赏
  • 举报
回复
用正则表达式吧QRegExp,限制输入信息为数字;
或者用setInputMask()方法。
dbzhang800 2011-03-22
  • 打赏
  • 举报
回复
http://hi.baidu.com/cyclone/blog/item/663709236315e95e925807d1.html
void Widget::Select() //查询 { QString name = ui->lineEdit->text(); model->setFilter(QObject::tr("id = '%1'").arg(name)); //根据姓名进行筛选 model->select(); //显示结果 } void Widget::Delect() //删除当前行 { int curRow = ui->tableView->currentIndex().row(); //获取选中的行 model->removeRow(curRow); //删除该行 int ok = QMessageBox::warning(this,tr("删除当前行!"),tr("你确定" "删除当前行吗?"), QMessageBox::Yes,QMessageBox::No); if(ok == QMessageBox::No) { model->revertAll(); //如果不删除,则撤销 } else model->submitAll(); //否则提交,在数据库中删除该行 } void Widget::Add() //插入记录 { int rowNum = model->rowCount(); //获得表的行数 int id = 10; model->insertRow(rowNum); //添加一行 model->setData(model->index(rowNum,0),id); //model->submitAll(); //可以直接提交 } void Widget::Back() //返回全表 { model->setTable("student"); //重新关联表 model->setHeaderData(0, Qt::Horizontal, "Time"); model->setHeaderData(1, Qt::Horizontal, "Temperature"); model->select(); //这样才能再次显示整个表的内容 } void Widget::Amend() //提交修改 { model->database().transaction(); //开始事务操作 if (model->submitAll()) { model->database().commit(); //提交 } else { model->database().rollback(); //回滚 QMessageBox::warning(this, tr("tableModel"), tr("数据库错误: %1").arg(model->lastError().text())); } } void Widget::Get_time() { QString string; QTime current_time = QTime::currentTime(); int hour = current_time.hour(); int minute = current_time.minute(); int second = current_time.second(); // int msec = current_time.msec(); string=QString("%1").arg(hour)+":"+QString("%1").arg(minute) +":"+QString("%1").arg(second); ui->Receive->append(string); //qDebug() int id = 10; model->insertRow(rowNum); //添加一行 model->setData(model->index(rowNum,0),string); model->submitAll(); } void Widget::readMyCom() { QByteArray temp = myCom->readAll(); if(temp.size()!=0) { QString string; QTime current_time = QTime::currentTime(); int hour = current_time.hour(); int minute = current_time.minute(); int second = current_time.second(); // int msec = current_time.msec(); string=QString("%1").arg(hour)+":"+QString("%1").arg(minute) +":"+QString("%1").arg(second); ui->Receive->append(string); //qDebug() int id = 10; model->insertRow(rowNum); //添加一行 model->setData(model->index(rowNum,0),string); model->setData(model->index(rowNum,1),temp); model->submitAll(); data_light=temp.toInt(); } ui->Receive->append(temp); } void Widget::openCom() { QString portName = ui->portNameComboBox->currentText(); myCom = new Win_QextSerialPort(portName,QextSerialBase::EventDriven); myCom ->open(QIODevice::ReadWrite); if(ui->baudRateComboBox->currentText()==tr("9600")) myCom->setBaudRate(BAUD9600); else if(ui->baudRateComboBox->currentText()==tr("115200")) myCom->setBaudRate(BAUD115200); myCom->setFlowControl(FLOW_OFF); myCom->setTimeout(500); connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom())); ui->openMyComBtn->setEnabled(false); ui->closeMyComBtn->setEnabled(true); ui->baudRateComboBox->setEnabled(false); ui->portNameComboBox->setEnabled(false); }

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧