• 17991阅读
  • 13回复

【提问】如何控制输入IP地址?如何显示密码为*号? [复制链接]

上一主题 下一主题
离线xd1198
 

只看楼主 倒序阅读 楼主  发表于: 2005-09-27
要提供一个对话框,让用户输入ip地址,不知道在 qt里有没有现成的类可以用,还是只能用QLineEdit类,然后读取数据后自己去判断?
还有一个问题就是,在密码输入框(QLineEdit类),当输入密码时,希望显示为 * 号,该如何设置?
[ 此贴被XChinux在2005-09-27 16:30重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2005-09-27
在QLineEdit的属性中,有一个echoMode属性,设置它为QLineEdit::Password就会显示密码模式的*号

而关于IP输入,可设置inputMask属性为"000.000.000.000;_",并且配合 QValidator 来进行验证. 详情看Qt Reference
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xd1198

只看该作者 2楼 发表于: 2005-09-27
谢谢了,第一个问题解决了,但是还是没有找到inputMask属性在哪里设置,在QLineEdit的属性里没有啊。还望指教。
离线XChinux

只看该作者 3楼 发表于: 2005-09-27
我用的Qt 4.0里QLineEdit里有这个属性.其它的我不知道了就.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xd1198

只看该作者 4楼 发表于: 2005-09-28
我用的是3.0.5,可能还没有这个功能了。看来只能自己先读取输入值,再去判断了。谢谢XChinux兄的解答
离线army124
只看该作者 5楼 发表于: 2008-09-18
XChinux  老大 ,以下是想只能在文本输入框合法IP地址的代码,但是不成功,文本框什么都不让输入,如果屏蔽 subNetLineEdit->setInputMask("000.000.000.000");的话就可以输入,但是要自己手动输入。能不能帮忙看看什么原因啊,是不是我的正则表达式写错了啊,先谢了。

QRegExp validInputValueRegEx("^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.
                                                                (\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.
                                                                (\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.
                                                                (\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$");

QValidator* inputValueValidator = new QRegExpValidator(validInputValueRegEx, this);
subNetLineEdit = new QLineEdit;
subNetLineEdit->setInputMask("000.000.000.000");
subNetLineEdit->setValidator(inputValueValidator);
离线lugaideath

只看该作者 6楼 发表于: 2008-10-16
你顺序错了!应该是先subNetLineEdit->setValidator(inputValueValidator);再subNetLineEdit->setInputMask("000.000.000.000");的!倒过来就正常了!
离线yfx2003

只看该作者 7楼 发表于: 2008-10-17
楼上的表达式一看就不专业啊……
建议找本 正则表达式 的书看看
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线lgh603
只看该作者 8楼 发表于: 2008-10-23
    setupUi(this);
   
    QRegExp rx("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$");
    QValidator *validator = new QRegExpValidator(rx, this);

    lineEdit->setValidator(validator);
(1)  //lineEdit->setInputMask("000.000.000.000;");
(2)  lineEdit->setInputMask("000.000.000.000;");

我用的是上面的代码,不过上面的代码存在以下问题:

(1)正则表达式工作正常,但是界面没有掩码显示
(2)正则表达式工作不正常,能输入999.999.999.999类似的错误IP地址

这是为什么?
Qt4.4.3 OpenSource
离线lazybone
只看该作者 9楼 发表于: 2008-10-25
Jambi
---------------
[ 此贴被lazybone在2008-12-03 15:56重新编辑 ]
离线winterlxd

只看该作者 10楼 发表于: 2008-10-26
学习了!!
离线evangel
只看该作者 11楼 发表于: 2009-08-06
^(([1-9]|([1-9]\\d)|(1\\d\\d)|(2([0-4]\\d|5[0-5])))\\.)((d|([1-9]\\d)|(1\\d\\d)|(2([0-4]\\d|5[0-5])))\\.){2}([1-9]|([1-9]\\d)|(1\\d\\d)|(2([0-4]\\d|5[0-5])))$
mac os x, ubuntu, iphone
离线kevinshi
只看该作者 12楼 发表于: 2010-09-16
引用第7楼yfx2003于2008-10-17 07:29发表的 :
楼上的表达式一看就不专业啊……
建议找本 正则表达式 的书看看


你这么说你很专业咯?装B!
离线davis45
只看该作者 13楼 发表于: 2010-09-16
引用第12楼kevinshi于2010-09-16 10:30发表的 :
你这么说你很专业咯?装B!


都是学习来的,骂街可不对,蛋定
谢谢大家的指教
快速回复
限100 字节
 
上一个 下一个