я должен подключить событие фокуса с некоторым QLineEdit элемента (ui-> lineEdit) к методу фокусировки(). Как я могу это сделать?QLineEdit - фокус событие
7
A
ответ
21
Там нет сигнала когда QLineEdit получает фокус. Таким образом, понятие подключения метода к событию фокуса напрямую не подходит.
Если вы хотите получить сигнал focused
, вам нужно будет получить класс 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()
метода (слот).
1
Я предполагаю, что вы имеете в виду подключения, как в сигналах/слотах, фокус событие не является сигналом это виртуальный метод, который вы должны переопределить для того, чтобы изменить поведение: