• 4268阅读
  • 4回复

求助:如何设置一个可以实现地理经度的lineedit [复制链接]

上一主题 下一主题
离线powerdarksky
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-11
有这样一个lineedit, 格式是 xx ° yy' zz" N 或者 xx ° yy' zz" S。 用户可以输入数据有(° ' '')这些符号,或者没有这些符号用空格代替,但是马上自动会转换为有这些符号。
比如,在lineedit里输入 22 33 44 S会立刻转换为 22 ° 33' 44" S。
这个怎么实现呢?完全的没有头绪。各位大大帮忙
离线wader
只看该作者 1楼 发表于: 2009-06-11
在designer中设置inputMask属性为099° 99′ 99″;即可

相应代码如下:
  1.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  2.     lineEdit->setInputMask(tr("099° 99′ 99″"));
[ 此帖被wader在2009-06-11 09:41重新编辑 ]
离线powerdarksky

只看该作者 2楼 发表于: 2009-06-11
引用第1楼wader于2009-06-11 08:23发表的  :
在designer中设置inputMask属性为099° 99′ 99″;即可
相应代码如下:
[code]
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
.......


那只能输入N或者S是怎么实现的呢?因为地球只有南北纬
[ 此帖被powerdarksky在2009-06-11 21:33重新编辑 ]
离线powerdarksky

只看该作者 3楼 发表于: 2009-06-11
有没有人回答下面那个问题呢?
离线wader
只看该作者 4楼 发表于: 2009-06-12
还得加上正则表达式验证才行
  1.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  2.     QRegExp reg(tr("\\d{3}° \\d{2}′ \\d{2}″ [NS]"));
  3.     QRegExpValidator* validator = new QRegExpValidator(reg, lineEdit);
  4.     lineEdit->setValidator(validator);
  5.     lineEdit->setInputMask(tr("999° 99′ 99″ A"));
  6.     
  7.     lineEdit->setText(tr("000° 00′ 00″ N"));
[ 此帖被wader在2009-06-12 10:06重新编辑 ]
快速回复
限100 字节
 
上一个 下一个