Название: Qtextchanged+QLineedit Отправлено: koldun90 от Апрель 17, 2015, 20:37 Здравствуйте такая задача нужно чтобы в lineedit вводились только цифры 2,1,0
соответственно при испускании сигнала textchanged выполняется слот Код но почему то блокируется ввод 2,1 и 0 в чем может быть проблема? Название: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 17, 2015, 20:55 А в lineedit можно ввести только 1 знак?
Название: Re: Qtextchanged+QLineedit Отправлено: Johnik от Апрель 17, 2015, 20:57 Код
Название: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 17, 2015, 21:18 С QValidator лучшее решение.
А в данном случае: Цитировать if (arg1!="1" || arg1!="2"|| arg1!="0") if всегда вернет trueНазвание: Re: Qtextchanged+QLineedit Отправлено: koldun90 от Апрель 17, 2015, 21:21 А в lineedit можно ввести только 1 знак? почему можно многоНазвание: Re: Qtextchanged+QLineedit Отправлено: koldun90 от Апрель 17, 2015, 21:25 у меня qt 4.8
там нет QRegularExpression Название: Re: Qtextchanged+QLineedit Отправлено: koldun90 от Апрель 17, 2015, 21:26 С QValidator лучшее решение. А в данном случае: Цитировать if (arg1!="1" || arg1!="2"|| arg1!="0") if всегда вернет trueа почему всегда если ввиду первым символом единицу например if не должен выполниться Название: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 17, 2015, 21:30 а почему всегда если ввиду первым символом единицу например if не должен выполниться При использовании логической операции ИЛИ полное условие будет истинным, если хотя бы одно условие является истинным. ЗЫ. А когда &arg1 будет больше одного символа, какую проверку делать? Название: Re: Qtextchanged+QLineedit Отправлено: Johnik от Апрель 17, 2015, 21:44 у меня qt 4.8 А как на счет QRegExp и QRegExpValidator?там нет QRegularExpression Название: Re: Qtextchanged+QLineedit Отправлено: koldun90 от Апрель 17, 2015, 21:45 Код так сделал вроде работает Название: Re: Qtextchanged+QLineedit Отправлено: kambala от Апрель 17, 2015, 22:34 может для такого лучше воспользоваться другим компонентом? комбобокс или радиокнопки например.
Название: Re: Qtextchanged+QLineedit Отправлено: Igors от Апрель 18, 2015, 09:19 Код
Название: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 18, 2015, 11:54 Замените || на &&. И там есть ввод по маске, лучше его задействовать Зачем давать советы, которые человеку не помогут? Ни замена на &&, ни маска, не решает задачи. Название: Re: Qtextchanged+QLineedit Отправлено: Igors от Апрель 18, 2015, 13:05 Зачем давать советы, которые человеку не помогут? Ни замена на &&, ни маска, не решает задачи. Не вижу почему же не решает :)Название: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 18, 2015, 14:31 А что даст замена на &&
Цитировать if (arg1!="1" && arg1!="2" && arg1!="0") при вводе второго символа, все равно будет очищаться lineedit. Тогда уж, если использовать сигнал textChanged, то делать проверку, что-то типа: Код:
Цитировать И там есть ввод по маске Может имелся ввиду валидатор? Название: Re: Qtextchanged+QLineedit Отправлено: Igors от Апрель 18, 2015, 15:36 при вводе второго символа, все равно будет очищаться lineedit. Сначала пусть хоть первый получит :)Может имелся ввиду валидатор? Имелось ввиду QLineEdit::setInputMaskНазвание: Re: Qtextchanged+QLineedit Отправлено: PimenS от Апрель 18, 2015, 15:50 Имелось ввиду QLineEdit::setInputMask Как через setInputMask задать, чтобы можно было вводить только символы "0", "1" и "2"? |