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