我想为几个类似的QLineEdit对象实现对用户输入的自定义响应。我想创建一个通用的editingFinished()或textChanged()信号处理程序,并将其分配给所有的QLineEdit。但是,响应需要信号发送者的知识-例如,它必须用不同的颜色突出显示输入的文本。
我如何知道信号在它的处理程序中的发送者?
发布于 2011-02-17 15:25:26
您可以通过调用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
}
}发布于 2011-02-17 13:21:48
也许你应该考虑使用QSignalMapper技术:http://doc.qt.io/qt-4.8/qsignalmapper.html
https://stackoverflow.com/questions/5025089
复制相似问题