Russian Qt Forum
Ноябрь 24, 2024, 19:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы QLineEdit  (Прочитано 5450 раз)
LIKAN_BLK
Гость
« : Май 05, 2012, 18:01 »

Необходимо чтоб QLineEdit вырабатывал сигнал после того как пользователь закончил ввод, те когда во вводе встретился EOS(Ну или по нажатии клавиши Enter). Как организовать?
Записан
Serr500
Гость
« Ответ #1 : Май 05, 2012, 18:22 »

void QLineEdit::returnPressed () [signal]

http://qt-project.org/doc/qt-4.8/qlineedit.html#returnPressed
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Май 05, 2012, 18:39 »

Необходимо чтоб QLineEdit вырабатывал сигнал после того как пользователь закончил ввод, те когда во вводе встретился EOS(Ну или по нажатии клавиши Enter). Как организовать?
Откройте букварь, класс QLineEdit и посмотрите какие сигналы он испускает - через пару минут (или раньше) Вы найдете нужный. Это гораздо быстрее и практичнее чем спрашивать такие вещи на форуме  Улыбающийся
Записан
LIKAN_BLK
Гость
« Ответ #3 : Май 05, 2012, 20:31 »

ок почитал, теперь вопрос, как это использовать?
Я хочу чтоб этот сигнал ловил класс отнаследованный от QWidget.
В определении класса я пишу
Код:
private slots:
        void on_lineEdit_returnPressed();
Я хочу, чтобы по принятии сигнала на этом виджете что-нибудь отрисовывалось. Как подружить этот слот и paintEvent ?
Записан
Serr500
Гость
« Ответ #4 : Май 05, 2012, 20:48 »

Вы принципиально не читаете документацию?

Цитировать
QLineEdit LineEdit;
MyWidget MyWidget;
MyWidget.connect(&LineEdit, SIGNAL(returnPressed()), SLOT(on_lineEdit_returnPressed()));

В слоте on_lineEdit_returnPressed() выполняете требуемые отрисовки.
Записан
LIKAN_BLK
Гость
« Ответ #5 : Май 05, 2012, 20:49 »

Эмм,  я думал что какие либо операции с QPainter можно производить только в paintEvent, не?
Записан
Serr500
Гость
« Ответ #6 : Май 05, 2012, 20:57 »

Если Вы хотите перерисовать виджет по сигналу, то в обработчике сигнала выставляете требуемые параметры и вызываете QWidget::repaint() или QWidget::update(). Кстати, можно даже так:
Код:
MyWidget.connect(&LineEdit, SIGNAL(returnPressed()), SLOT(repaint()));
// или
MyWidget.connect(&LineEdit, SIGNAL(returnPressed()), SLOT(update()));

Вы, похоже, не делаете различий между сигналами (типа returnPressed) и событиями (типа paintEvent). Должен Вам сказать, что это совершенно разные понятия.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 23.