Программы на C++. Форум разработчиков
Anonymous
Очистите фокус от QTableWidget, как только навигация по клавишам табуляции достигнет последнего элемента.
Сообщение
Anonymous » 17 сен 2024, 00:21
Я настроил диалоговое окно, и при нажатии клавиши Tab фокус переключается с кнопки на виджет таблицы. Я хочу, чтобы фокус вернулся к исходной кнопке после прохождения всех элементов виджета таблицы. Вот минимальный воспроизводимый пример:
Код: Выделить всё
#include
#include
#include
#include
class Widget : public QWidget
{
public:
explicit Widget()
{
setLayout(&vl);
tw.setRowCount(1);
tw.setColumnCount(3);
vl.addWidget(&btn);
vl.addWidget(&tw);
}
bool focusNextPrevChild(bool next)
{
QWidget* focusWidget = this->focusWidget();
if (focusWidget == &tw)
{
int currentRow = tw.currentRow();
int currentCol = tw.currentColumn();
int lastRow = tw.rowCount() - 1;
int lastCol = tw.columnCount() - 1;
if (next && currentRow == lastRow && currentCol == lastCol)
{
tw.clearFocus();
return true;
}
}
return QWidget::focusNextPrevChild(next);
}
private:
QPushButton btn;
QTableWidget tw;
QVBoxLayout vl;
};
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
Я попробовал переопределить функцию focusNextPrevChild, но это не сработало. Как только фокус попадает в виджет таблицы, он не может его покинуть.
Подробнее здесь:
https://stackoverflow.com/questions/789 ... -last-item
1726521700
Anonymous
Я настроил диалоговое окно, и при нажатии клавиши Tab фокус переключается с кнопки на виджет таблицы. Я хочу, чтобы фокус вернулся к исходной кнопке после прохождения всех элементов виджета таблицы. Вот минимальный воспроизводимый пример: [code]#include #include #include #include class Widget : public QWidget { public: explicit Widget() { setLayout(&vl); tw.setRowCount(1); tw.setColumnCount(3); vl.addWidget(&btn); vl.addWidget(&tw); } bool focusNextPrevChild(bool next) { QWidget* focusWidget = this->focusWidget(); if (focusWidget == &tw) { int currentRow = tw.currentRow(); int currentCol = tw.currentColumn(); int lastRow = tw.rowCount() - 1; int lastCol = tw.columnCount() - 1; if (next && currentRow == lastRow && currentCol == lastCol) { tw.clearFocus(); return true; } } return QWidget::focusNextPrevChild(next); } private: QPushButton btn; QTableWidget tw; QVBoxLayout vl; }; int main(int argc, char* argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } [/code] [img]https://i.sstatic.net/IUx81eWk.png[/img] Я попробовал переопределить функцию focusNextPrevChild, но это не сработало. Как только фокус попадает в виджет таблицы, он не может его покинуть. Подробнее здесь: [url]https://stackoverflow.com/questions/78986521/clear-focus-from-qtablewidget-once-tab-key-navigation-reaches-the-last-item[/url]
Обнаружить фокус, инициированный клавишей табуляции?
Гость »
28 сен 2023, 20:11 » в форуме
Jquery
Я хочу обнаружить событие фокуса элемента, но только в том случае, если оно было инициировано пользователем, нажав клавишу табуляции. Например:
Если пользователь сосредоточился на #foo и нажал Tab, я хочу, чтобы событие сработало, как только...
0 Ответы
21 Просмотры
Последнее сообщение Гость
28 сен 2023, 20:11
Обнаружить фокус, инициированный клавишей табуляции?
Anonymous »
29 сен 2023, 11:20 » в форуме
Jquery
Я хочу обнаружить событие фокуса элемента, но только в том случае, если оно было инициировано пользователем, нажав клавишу табуляции. Например:
Если пользователь сосредоточился на #foo и нажал Tab, я хочу, чтобы событие сработало, как только...
0 Ответы
17 Просмотры
Последнее сообщение Anonymous
29 сен 2023, 11:20
Фокус внутри псевдокласса не работает для табуляции в JavaFX
Anonymous »
19 апр 2024, 14:03 » в форуме
JAVA
Согласно JavaFX 22 поддерживает фокус внутри псевдокласса. Я использую JavaFX 23-ea+3, и это мой код:
public class JavaFxTest7 extends Application {
private static class Student {
private int id;
private int mark;
public Student(int id, int...
0 Ответы
15 Просмотры
Последнее сообщение Anonymous
19 апр 2024, 14:03
Фокус внутри псевдокласса не работает для табуляции в JavaFX
Anonymous »
19 апр 2024, 22:53 » в форуме
JAVA
Согласно JavaFX 22 поддерживает фокус внутри псевдокласса. Я использую JavaFX 23-ea+3, и это мой код:
public class JavaFxTest7 extends Application {
private static class Student {
private int id;
private int mark;
public Student(int id, int...
0 Ответы
16 Просмотры
Последнее сообщение Anonymous
19 апр 2024, 22:53
0 Ответы
20 Просмотры
Последнее сообщение Anonymous
04 янв 2025, 22:15