Я разрабатываю приложение для ПК и Android, используя Qt Creator и C++. Для части моего приложения у меня есть QTableWidget, в который пользователь может добавлять записи и редактировать информацию внутри полей.
Как на ПК, так и на AVD, который я использовал для проверки того, как приложение будет работать на Android, я могу без проблем редактировать поля таблицы. Однако теперь, когда я подключил настоящий телефон Android к своему компьютеру и протестировал на нем приложение, я не могу выбирать флажки. Независимо от того, где я нажимаю или насколько сильно нажимаю, поля не выбираются.

А вот вывод приложения. Стоит отметить, что строка «AccessibilityEvent с пустым описанием», похоже, появляется только тогда, когда я нажимаю на пустое поле в таблице.
Код: Выделить всё
I e.ChickenChart: Late-enabling -Xcheck:jni
E e.ChickenChart: Unknown bits set in runtime_flags: 0x8000
W System : ClassLoader referenced unknown path:
W e.ChickenChart: Accessing hidden method Landroid/content/ContextWrapper;-\>getDisplay()Landroid/view/Display; (greylist, linking, allowed)
I QtCore : Start
I Qt : qt started
I AdrenoGLES: QUALCOMM build : 961b24f, Ib57168459a
I AdrenoGLES: Build Date : 02/24/20
I AdrenoGLES: OpenGL ES Shader Compiler Version: EV031.27.05.06
I AdrenoGLES: Local Branch :
I AdrenoGLES: Remote Branch :
I AdrenoGLES: Remote Branch :
I AdrenoGLES: Reconstruct Branch :
I AdrenoGLES: Build Config : S L 8.0.12 AArch32
I AdrenoGLES: PFP: 0x005ff113, ME: 0x005ff066
W Gralloc3: mapper 3.x is not supported
W Qt A11Y : Could not (yet) activate platform accessibility.
W Qt A11Y : AccessibilityEvent with empty description
I chatty : uid=10397(org.qtproject.example.ChickenCharts) identical 1 line
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityNodeInfo with empty contentDescription: -2147483627
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityNodeInfo with empty contentDescription: -2147483565
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityNodeInfo with empty contentDescription: -2147483566
W Qt A11Y : AccessibilityEvent with empty description
13:05:31:
"org.qtproject.example.ChickenCharts" died.
Я также пробовал изменить режим выбора таблицы, но это опять же не сработало. Я не понимаю, в чем может быть проблема.
(ОБНОВЛЕНИЕ):
Как предложил Хайд , я создал простое приложение, которое содержит только окно с QTableWidget. Он полностью содержится в main(), а в таблице только одна ячейка.
Я тестировал его как на настольном компьютере, так и на своем телефоне. На рабочем столе ячейку можно было редактировать как обычно, но на Android, хотя ячейка и выделялась, когда я касался ее, я не мог ее редактировать.
Я пытался это исправить. проблема в этом небольшом тестовом приложении, но пока мне это не удалось. Я также проверил, установлен ли для ячейки флаг ItemIsEditable, и так оно и было. Если проблема не исчезнет, я могу рассмотреть возможность изменения диаграммы для использования QML.
Вот минимальный воспроизводимый пример, который можно использовать в Qt Creator:
Код: Выделить всё
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *window = new QWidget();
QVBoxLayout *v_layout = new QVBoxLayout(window);
QTableWidget *table = new QTableWidget();
table->setRowCount(1);
table->setColumnCount(1);
v_layout->addWidget(table);
window->show();
return a.exec();
}
Как рекомендовал musicamante, я переопределил метод event() QTableWidget и распечатал полученные события на консоль. Вот событие, которое я получал каждый раз, когда постучал по столу:
Код: Выделить всё
D libTableTest_armeabi-v7a.so: QEvent::InputMethodQuery
Код: Выделить всё
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityNodeInfo with empty contentDescription: -2147483635
W Qt A11Y : AccessibilityEvent with empty description
D libTableTest_armeabi-v7a.so: QEvent::Timer // this appears after a short delay
Код: Выделить всё
D libTableTest_armeabi-v7a.so: QEvent::TouchBegin
Я протестировал AA_SynthesizeMouseForUnhandledTouchEvents, и по умолчанию для него установлено
значение true. Установка значения false удалила этот вывод всякий раз, когда я нажимал на ячейку:
Код: Выделить всё
W Qt A11Y : AccessibilityEvent with empty description
W Qt A11Y : AccessibilityNodeInfo with empty contentDescription: -2147483635
W Qt A11Y : AccessibilityEvent with empty description
At one point during my tests and experiments I was actually able to select a cell and open the keyboard without needing the partial fix I had made in my first answer, however after this happened I was not able to do it again and no matter how much I tapped or pressed on the cells they couldn't be edited.
Источник: https://stackoverflow.com/questions/781 ... emulator-b
Мобильная версия