Всем привет.
Возникла такая проблема.. Есть у меня самодельный виджет (класс CAnswerForm), наследник QWidget, и содержит он два виджета: чекбокс и текседит. Этот виджет размещается на MainWindow, вернее таких виджетов там размещается много и динамически. Вот код:
CAnswerForm *al;
al = new CAnswerForm(this); //тут мы создаем виджет
answerList.append(al); //добавляем этот виджет в вектор
testsVbl->insertWidget(i, answerList.last()); //добавляем этот виджет в layout
answerList.last()->show();//показываем
И вот понадобилось мне знать какому виджету принадлежит текседит, по которому ткнул пользователь мышью. Я сделал так: в конструкторе своего виджета добавил евентФильтр (ui->textEdit->installEventFilter(this)
и затем вот так:
bool CAnswerForm::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::FocusIn)
{
emit answerClicked(this);
return true;
}
else
{
return false;
}
}
Когда происходит установка фокуса CAnswerForm::eventFilter генерирует сигнал answerClicked(this), через который собственно и передается адрес нужного мне виджета и затем уже в MainWindow я в слоте делаю с этим виджетом что мне нужно.
Только вот проблема, которую я уже пол дня решить пытаюсь: текстедит в моем виджете фокус как-то не до конца получает, после того как я ткну по нему мышью, должен появится курсор мигающий в текстедите, чего собственно и не происоходит, хотя при этом я могу печатать текст в нем не видя при этом курсора. В чем может быть проблема?