2010-03-02 17 views
2

je trouve que je peux définir une info-bulle sur un QLineEdit comme tel:Affichage infobulle de QLineEdit sur focus dans Qt

equation = new QLineEdit(); 
equation->setToolTip("Example: a*b+c+~c"); 

Cependant, je voudrais l'info-bulle à afficher lorsque cette QLineEdit se concentre. Comment est-ce que je fais cela?

Merci d'avance.

+0

Je reçois là-bas. J'ai ce jusqu'à présent: EquationEditor vide :: focusInEvent (QFocusEvent * e) { \t l'événement QHelpEvent (QEvent :: info-bulle, this-> pos(), this-> pos()); \t QApplication :: sendEvent (this, & event); \t QLineEdit :: focusInEvent (e); } Mais je ne suis pas sûr comment définir les deux derniers paramètres à QHelpEvent. – Gezim

Répondre

1

j'ai pu accomplir cela en QLineEdit et focusInEvent le sous-classement prioritaire (...) en tant que tel:

void EquationEditor::focusInEvent(QFocusEvent *e) 
{ 
    QHelpEvent *event = new QHelpEvent(QEvent::ToolTip, 
             QPoint(this->pos().x(), this->pos().y()), 
             QPoint(QCursor::pos().x(), QCursor::pos().y())); 

    QApplication::postEvent(this, event); 

    QLineEdit::focusInEvent(e); 
} 
0

Je suggère que vous avez un oeil à l'exemple suivant: Tool Tips Example

Vous pouvez afficher l'info-bulle lorsque votre LineEdit devient le centre, peut-être en se connectant à ce signal:

void QApplication::focusChanged (QWidget * old, QWidget * now) [signal] 

Il est aussi quelques informations assez soignées à propos de Focus ici: QFocusEvent Class Reference

Espérons que ça aide un peu!