У меня есть виджет, который отображает список настроек, которые пользователь может установить, сняв флажок. Процесс включения / отключения настройки может занять некоторое время, поэтому я реализовал визуальное представление «в процессе», чтобы избежать нескольких кликов от пользователя, пока работа еще не завершена:
func CheckBoxTransaction(transaction func() error, checkBox *widgets.QCheckBox) {
checkBox.SetEnabled(false)
checkBox.Repaint()
// transaction() sets the setting, can take a while
if err := transaction(); err != nil {
log.Println(err)
checkBox.SetChecked(!checkBox.IsChecked())
}
checkBox.SetEnabled(true)
}
Однако,побочный эффект, которого я не ожидал, начался: когда вы ставите галочку, фокус переходит к следующему флажку в списке настроек из-за checkBox.SetEnabled(false)
. Это приводит к тому, что пользовательский интерфейс приложения начинает нервничать, так как фокус на следующем флажке заметен на глаз.
Как я могу удержать фокус от скачка с флажка, который я собираюсь отключить? Или есть лучший способ добиться эффекта, к которому я стремлюсь (на какое-то время блокируется пользовательский ввод и становится видимым, что ввод заблокирован)?