QLineEdit-focus event
j'ai pour vous connecter événements de focus à partir de certains QLineEdit (élémentinterface utilisateur->lineEdit) à la méthode focus (). Comment puis-je faire cela?
2 réponses
il n'y a pas de signal émis lorsqu'un QLineEdit obtient la mise au point. Par conséquent, l'idée de relier une méthode à l'événement principal n'est pas directement appropriée.
Si vous voulez avoir un focused
signal, vous devrez dériver la classe Qlinedit. Voici un exemple de comment cela peut être réalisé.
Dans le myLineEdit.h
fichier:
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);
}
Dans le myLineEdit.cpp
fichier :
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));
}
vous pouvez maintenant connecter le MyLineEdit::focussed()
signal à votre focus()
méthode (fente.)
je suppose que vous voulez dire connecter comme dans signals/ slots, focus event n'est pas un signal c'est une méthode virtuelle que vous devez outrepasser afin de changer le comportement: