我遇到了一些麻烦,我对Qt和C ++很陌生,并且正在测试水域。我试着按如下方式描述我的问题。我有一个LineEdit QLineEdit
,这个编辑有一个如下所示的连接:
connect(my_lineedit, SIGNAL (textEdited(QString)),this, SLOT (handleEdits()));
调用handleEdits()
方法并执行以下操作:
my_lineedit
QLineEdit
,它会收到一个新信号并调用handleAddedEdits()
上述说明工作正常我只是告诉你这样你才能得到照片。
现在在我称之为handleAddedEdits()
的新方法中,我想要再次发生相同的过程。
handleAddedEdits()
的信号。QLineEdit
问题是:在第一种情况下my_lineedit
在我的班级中声明,所以我可以自由地引用它并按照我的意愿删除信号。在第二种情况下,我有一个QLineEdit
,它是在handleEdits()
方法中动态创建的,是“发件人”。我的问题是,我如何参考“发件人对象”ro从动态创建的编辑中删除信号?
答案 0 :(得分:5)
您需要在收件人的插槽中使用QObject::sender()
方法:
如果您需要有关发件人的信息 signal,Qt提供
QObject::sender()
函数,返回a 指向发送信号的对象的指针。
handleAddedEdits()
{
QObject* obj = sender();
disconnect( obj, SIGNAL(textEdited(QString)), 0, 0 );
//...
}