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

mba*_*off 2 c++ qt qt4

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

我怎么知道它的处理程序中信号的发送者?

use*_*511 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
  }
}
Run Code Online (Sandbox Code Playgroud)