jak wyłączyć w QListWidget mechanizm automatycznego ustawiania fokusa po nacisnieciu klawisza

0

W QListWidget mam elementy z tekstem:

auto *listWidget = new QListWidget(this);
listWidget->resize(300,300);

QVector<QString> vector;
vector << "alpha" << "beta"  << "cccc" << "delta" << "eeee" << "gamma";
for (int i = 0 ; i < vector.size(); ++i)
{
    QListWidgetItem *item = new QListWidgetItem(vector[i], listWidget);
    listWidget->addItem(item);
}

naciskając klawisz A, B, C, D, E,G, ustawia się automatycznie fokus na elemencie zaczynającym się na dana literę

Jak wyłączyć ten mechanizm ?
Ze względu że to urządzenie embedded i trochę miesza mi ten mechanizm, zastanawiam się w ogóle gdzie to jest zaszyte

2

Ja bym poszedł w event filer, coś w stylu (nie testowane):

class CharactersEventFiler : public QObject
{
    Q_OBJECT
public:
    explicit CharactersEventFiler(QObject* parent) : QObject(parent) {}

    bool eventFilter(QObject *obj, QEvent *event) override
    {
        if (event->type() == QEvent::KeyPress)
        {
            QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
            QString key = keyEvent->text().toLower();

            if (key.length() == 1 && key.at(0).isLetter())
            {
                return true;
            }
        }
        return QObject::eventFilter(obj, event);
    }
};


...
listWidget->installEventFilter(new CharactersEventFiler{listWidget});
0

rozwiązanie keyPressEvent wygrało z eventFilter

młodszy programista walczył za pomocą eventFilter i dodał do wszystkiego co znalazł ale nie pomogło :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1