Есть форма, на которой расположены несколько кнопок с именами "up", "down", и т.д
Необходимо обрабатывать нажатия на стрелки (key_up и т.д.). Собственно сами ивенты я ловлю успешно таким вот образом.
bool ClientWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = dynamic_cast<QKeyEvent*>(event);
this->keyPressEvent(keyEvent);
}
return QObject::eventFilter(obj, event);
}
Проблема в том, что я хочу в keyPressEvent установить фокус у нужной кнопки, но:
1) Если я возвращаю из eventFilter при обработке нажатия true, то фокуса у кнопок вообще нет.
2) А если возвращаю QObject::eventFilter(obj, event);, то само собой setFocus в keyPressEvent работает не совсем как надо, так как в итоге фокус передается следующему объекту.
Как обработать этот случай правильней всего?
Переопределить функции focusNextPrevChild()
у ClientWindow
:
bool
ClientWindow::
focusNextPrevChild(bool next)
{
return false;
}
Реализация eventFilter() у меня:
bool
ClientWindow::
eventFilter(QObject *watched, QEvent *e)
{
if (e->type() == QEvent::KeyPress)
{
if(watched->objectName() == "ClientWindowWindow") {
ui->up->setStyleSheet(""); ui->down->setStyleSheet("");
ui->left->setStyleSheet(""); ui->right->setStyleSheet("");
QKeyEvent* event = static_cast<QKeyEvent*>(e);
switch(event->key()) {
case Qt::Key_Up: ui->up->setFocus(); ui->up->setStyleSheet("border: 1px solid red;") ;break;
case Qt::Key_Down: ui->down->setFocus(); ui->down->setStyleSheet("border: 1px solid red;"); break;
case Qt::Key_Left: ui->left->setFocus(); ui->left->setStyleSheet("border: 1px solid red;"); break;
case Qt::Key_Right: ui->right->setFocus(); ui->right->setStyleSheet("border: 1px solid red;"); break;
}
}
}
return QObject::eventFilter(watched, e);
}
Фильтр установить в конструкторе на qApp:
qApp->installEventFilter(this);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хочу получить информацию о дисках и разделах в windowsИспользовала функцию GetLogicalDrives(), но оттуда я могу взять только именованные разделы
Когда я использую SVG, чтобы нарисовать цикл и поместить текст, то как центрировать текст на SVG Path?
Есть вариант с помощью order_by или filterНужно сортировать данные из базы данных точнее статьи
Встала проблема с выравниванием блоков как на картинкеПомогите пожалуйста с решением, какими способами это можно сделать? Сайт верстаю на Bootstrap4