首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道是哪个QLineEdit在信号处理程序中发出了editingFinished()?

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

Stack Overflow用户
提问于 2011-02-17 12:34:30
回答 2查看 2.7K关注 0票数 2

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 15:25:26

您可以通过调用QObject::sender()来获取指向发送者的指针,然后将此指针强制转换为QLineEdit。就像这样

代码语言:javascript
复制
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
  }
}
票数 5
EN

Stack Overflow用户

发布于 2011-02-17 13:21:48

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5025089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档