qt编程,请教个大家这里要怎么写,左边是个comboBox类,可选择1,2,3三个值,后面的line edit可根据

小弟初学编程,请教个大家这里要怎么写,左边是个comboBox类,可选择1,2,3三个值,后面的lineedit可根据123的不同限定不同的数值范围,label为单位,也... 小弟初学编程,请教个大家这里要怎么写,左边是个comboBox类,可选择1,2,3三个值,后面的line edit可根据123的不同限定不同的数值范围,label为单位,也是根据comboBox的不同对应m、cm、mm。 展开
 我来答
创作者XXGDQ4kMbU
2012-02-03 · TA获得超过1281个赞
知道小有建树答主
回答量:371
采纳率:66%
帮助的人:427万
展开全部
要根据comboBox的选项不同来改变LineEdit的输入数值范围我们可以利用QComboBox的
void currentIndexChanged ( const QString & text ) 这个信号,但选择改变的时候就会
被emit;
要设定LineEdit的输入数值范围我们可以用setValidator()来设置LineEdit的正则表达式。
然后再自定义一个槽根据index来为lineEdit设置不同的Validator。
connect 信号currentIndexChanged 和这个槽 就可以完成这个功能。

偶写的程序
#include "dialog.h"
#include <QtGui>

Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
comboBox = new QComboBox;
lineEdit = new QLineEdit;

comboBox->addItem("1");
comboBox->addItem("2");
comboBox->addItem("3");

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(comboBox);
layout->addWidget(lineEdit);
this->setLayout(layout);

connect(comboBox,SIGNAL(currentIndexChanged(int)),
this,SLOT(selectChanged(int)));

this->selectChanged(0);
}

void Dialog::selectChanged(int index)
{
QRegExp rx;
switch(index)
{
case 0:
rx.setPattern("^\\d$");
break;
case 1:
rx.setPattern("^\\d{0,2}$");
break;
case 2:
rx.setPattern("^\\d{0,3}$");
break;

default:

break;
}
QValidator *validator = new QRegExpValidator(rx, this);
lineEdit->setValidator(validator);
}
追问
再请问下2个问题:
1、QRegExp rx的用法,比如,combox为1时,lineEdit的有效值为70-108,为2时有效值为0.3-3,用QRegExp该如何实现,我查了收藏,英文不怎么好理解。
2、combox为1时,lineEdit小数点后面精确到0.1,数据为70.1这样;combox为2时精确到0.05,即1.05,1.10,1.15这样,,否则报错,该如何实现呢。

多谢!!!
追答
QRegExp会阻止你输入非法字符但没办法报错,如果你希望程序会弹出那些QMessageBox来报错你应该重载lineEdit这个类。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式