Я должен соединить событие фокуса от некоторых QLineEdit
элемент (ui->lineEdit
) к методу focus()
. Как я могу сделать это?
Когда QLineEdit получает фокус, сигнал не передается. Таким образом, идея подключения метода к событию фокуса неуместна.
Если вы хотите получить сигнал с фокусом
, вам нужно будет унаследовать класс QLineEdit. Вот пример того, как этого можно достичь.
В файле myLineEdit.h
у вас есть:
class MyLineEdit : public QLineEdit
{
Q_OBJECT
public:
MyLineEdit(QWidget *parent = 0);
~MyLineEdit();
signals:
void focussed(bool hasFocus);
protected:
virtual void focusInEvent(QFocusEvent *e);
virtual void focusOutEvent(QFocusEvent *e);
}
В файле myLineEdit.cpp
у вас есть:
MyLineEdit::MyLineEdit(QWidget *parent)
: QLineEdit(parent)
{}
MyLineEdit::~MyLineEdit()
{}
void MyLineEdit::focusInEvent(QFocusEvent *e)
{
QLineEdit::focusInEvent(e);
emit(focussed(true));
}
void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
QLineEdit::focusOutEvent(e);
emit(focussed(false));
}
Теперь вы можете подключить MyLineEdit :: focussed ()
ваш метод focus ()
(слот).
Я предполагаю, что вы имеете в виду connect как в сигналах/слотах, событие focus не является сигналом, это виртуальный метод, который вы должны переопределить, чтобы изменить поведение: