如何知道哪个QLineEdit在信号处理程序中发出了editingFinished()?

时间:2011-02-17 04:34:30

标签: c++ qt qt4

我想为几个类似的QLineEdit对象实现对用户输入的自定义响应。我想创建一个editingFinished()textChanged()信号的公共处理程序,并将其分配给所有QLineEdit。但是,响应需要知道信号的发送者 - 例如,它必须突出显示不同颜色的输入文本。

如何知道处理程序中信号的发送者?

2 个答案:

答案 0 :(得分:5)

您可以通过调用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
  }
}

答案 1 :(得分:0)

您应该考虑使用QSignalMapper技术:http://doc.qt.io/qt-4.8/qsignalmapper.html