'class QWidget' has no member named 'setEditFocus', tab key simulation



  • ich möchte für einen gui tests einen tab key simulieren. per

    QTest::keyClicks(QLineEdit,Qt::Key_Tab);
    

    ist das auch kein Problem. Das Problem ist aber, das das Signal editingFinished() nicht ausgelöst wird (es wird bei Enter und Fokusverlust ausgelöst).
    Nun dacht ich mir ich setze den Fokus auf false:

    aWidget->setEditFocus(false);
    

    aber aus irgendeinem Grund meint der Compiler: 'class QWidget' has no member named 'setEditFocus'
    das is doch einfach nicht wahr oder (andere Funktionen wie findChild funktionieren.) wo könnte das Problem liegen?

    (ich meine mich zu erinnern das ich das selbe Problem mit findChild(name) hatte und deshalb diesen thread eröffnet habe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-239173-and-highlight-is-.html)

    edit: einige ergänzungen:
    der focus scheint gar nicht setzbar zu sein

    aWidget->hasFocus();
    

    ist immer false und vorher

    aWidget->setFocus(); nützt gar nix
    

    . Ich hab keine Ahnung woran das liegt.
    Um noch einmal auf die eigentliche Frage zurückzukommen: ich mus void

    QLineEdit::editingFinished ()   [signal]
    

    auslösen um korekt einen tab-key zu simulieren. Geht das eventuell auch ohne Focus verlust?

    edit: wie eben beschrieben verwende ich "setFocus" zusammen mit "clearFocus" braucht man "setEditFocus" gar nicht.



  • http://doc.trolltech.com/4.5/qwidget.html#setEditFocus

    Zitat:

    void QWidget::setEditFocus ( bool enable )

    If enable is true, make this widget have edit focus, in which case Qt::Key_Up and Qt::Key_Down will be delivered to the widget normally; otherwise, Qt::Key_Up and Qt::Key_Down are used to change focus.

    This feature is only available in Qt for Embedded Linux.

    See also hasEditFocus() and QApplication::keypadNavigationEnabled().



  • danke 🙂

    aber ich hab auch eine Lösung für das eigentliche Problem:

    die ganze fokussetzerei funktioniert nur wenn das widget sichtbar ist. per

    aWidget->show()
    

    erreicht man das. danach funktioniert die tab-key simulation auch ohne weiteres.

    letztendlich muss man also für korrekte gui-tests, diese tests sichtbar machen - oder?


Anmelden zum Antworten