Как узнать, какой QLineEdit испустил editFinished () внутри обработчика сигнала? - PullRequest
2 голосов
/ 17 февраля 2011

Я хочу реализовать пользовательский ответ на пользовательский ввод для нескольких похожих QLineEdit объектов.Я хочу создать общий обработчик сигнала editingFinished() или textChanged() и назначить его всем QLineEdit s.Однако ответ требует знания отправителя сигнала - например, он должен выделять введенный текст разными цветами.

Как узнать отправителя сигнала внутри его обработчика?

Ответы [ 2 ]

5 голосов
/ 17 февраля 2011

Вы можете получить указатель на отправителя с помощью вызова QObject :: sender () и затем привести этот указатель к QLineEdit.Что-то вроде

void MyClass::onTextChanged(const QString& text)
{
  QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
  if (edit)
  {
    // Do something with QLineEdit
  }
  else
  {
    // Just to make sure that you have not make mistake with connecting signals
  }
}
0 голосов
/ 17 февраля 2011

Может быть, вам стоит подумать об использовании техники QSignalMapper: http://doc.qt.io/qt-4.8/qsignalmapper.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...