Название: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 10:47 Доброго времени суток всем!!!Есть такой вопросик...
У меня на QLineEdit устаноовлен Validator, так он теперь не реагирут на сигнал editingFinished()...значит, нужно выбирать- либо сигнал, либо валидатор???или это можно как-нить избежать?? Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 11:35 все, я разобралась...он реагирут, только когда набираешь необходимое кол-во символов
Например, QRegExp regExp("[0-9]{6}"); exp= new QRegExpValidator(regExp,this); ui.PCOD->setValidator(exp); и тогда сигнал editingFinished() сработает только когда будет набрано 6 символо, а мне нужно чтобы он срабатывал, если меньше набирается... >:( или можно как-нить написать регулярное выражение, не ограничивающее кол-во символов Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Rcus от Март 16, 2009, 11:37 QIntValidator::QIntValidator ( int minimum, int maximum, QObject * parent )
Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 11:49 Пишу
QIntValidator *valint; valint =new QIntValidator(0,9,this); ui.PCOD->setValidator(valint); так он дает только одну цифру написать :( Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Rcus от Март 16, 2009, 11:50 /*sigh*/
new QIntValidator(0, 999999, this); Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 11:55 Спасибки!!!!!! :)Теперь работает.... :)
А вот сдеся QRegExp regExp_1("[А-Яа-]{255}") можно сделать как-нить неограниченное количество символов вводить??, чтобы тож можно было этот сигнал использовать??? Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: igor_bogomolov от Март 16, 2009, 12:08 QRegExp regExp("\\d+");
Подайдет? Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 13:05 Ну практически....мне просто надо неограниченное кол-во определенных символов
получилось так QRegExp regExp("[А-Яа-яЁё' -]+"); Всем спасибо!!!!!! :) Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 17:04 У меня тут еще один вопросик созрел))...
хочу на QLineEdit установить маску ввода, чтобы первый символ был в верхнем регистре, а последующие в нижнем...только их неограниченное кол-во должно быть.Это вообще возможно?? Я делаю пока так ui.lineEdit_2->setInputMask(">X!x"); , но естественно сдеся тока два символа ((( Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: igor_bogomolov от Март 16, 2009, 19:16 Цитировать f the line edit has an input mask, the mask defines the maximum string length. Как вариант, можно сделать через eventFilter. Что-то вроде этого:Код
Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: spirit от Март 16, 2009, 19:23 а зачем так сложно? :)
можно сигнал отлавливать QLineEdit::textEdited и в слоте-обработчике переводить в верхний регистр и устанавливать текст. ;) Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: igor_bogomolov от Март 16, 2009, 19:30 Оу. Это я поторопился.
Почему то в сторону сигналов сразу не подумал смотреть. Наверное слишком много за последнии дни с eventFilter возился :) Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 16, 2009, 21:49 Спасибочки ОГРОМНОЕ!!!!! :) :) :)
Получилось с помощью сигнала!!!!!!!! Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 17, 2009, 09:01 У меня получился вот такой вот слот
void DoctorForm::upp(QString str){ QString st; if(str.size()==1) ui.LineEdit->setText(str.toUpper()); else{ st=str.right(1).toLower(); ui.LineEdit->setText(str.left(str.size()-1).append(st)); } } подключаю его к сигналу textEdited() только вот одна проблема получается...он у меня привязывается к одному LineEdit, а мне нужно к нескольким едитам привязать этот сигнал и соответственно слот.А второй аргумент у слота upp(QString str, QLineEdit *l) установить, как я понимаю нельзя...подскажите пожалуйста как это можно сделать..или мне для каждого едита придется писать свой слот???? Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: spirit от Март 17, 2009, 09:12 У меня получился вот такой вот слот в чем проблема? через sender устанавливайте.void DoctorForm::upp(QString str){ QString st; if(str.size()==1) ui.LineEdit->setText(str.toUpper()); else{ st=str.right(1).toLower(); ui.LineEdit->setText(str.left(str.size()-1).append(st)); } } подключаю его к сигналу textEdited() только вот одна проблема получается...он у меня привязывается к одному LineEdit, а мне нужно к нескольким едитам привязать этот сигнал и соответственно слот.А второй аргумент у слота upp(QString str, QLineEdit *l) установить, как я понимаю нельзя...подскажите пожалуйста как это можно сделать..или мне для каждого едита придется писать свой слот???? Код
Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 17, 2009, 09:18 точно...теперь все как надо :) :) :)
Если честно, даже не знала, что так можно ;) Спасибо, вы меня прям выручили!!!! Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 18, 2009, 14:56 В QTextEdit не обнаружила сигнала по типу textEdited() как в QLineEdit, который не реагировал бы на setText()...есть только textChanged(),который реагирует и на setText(), а мне нужно чтобы реагировал на изменения только с клавиатуры...можт есть какой аналог??Я пока что-то не нашла >:(
Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: Evgeniya от Март 18, 2009, 15:30 или можно как-нить запретить выполнение сигнала???
Название: Re: QLineEdit не реагирут на сигнал editingFinished() Отправлено: FantasyOR от Декабрь 17, 2010, 16:11 Простите, что занимаюсь некромантией, но этот вопрос рано или поздно встает перед каждым(почти) и его можно решить в 1 строку, а не перегружать events и отлавливать слоты:
LineEdit1->setInputMask(">"); http://qtdocs.narod.ru/4.1.0/doc/html/qlineedit.html "> - Все следующие алфавитный символы переводятся в верхний регистр." - перевод делал не я =) используйте маску и регулярные выражения(да бывают очень специфичные требования и тогда нужно ловить...). Удачи |