1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
how_to_show_context_menu.md 2.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Как отобразить контекстное меню (также известное как меню правой кнопки мыши)

Если необходимо реализовать всплывающее меню при щелчке правой кнопкой мыши, можно использовать окно popup для создания интерфейса меню и использовать AWTK для предоставления события EVT_CONTEXT_MENU. Вот конкретные шаги:

  1. Используйте окно popup для завершения дизайна интерфейса, который будет отображаться в качестве всплывающего меню. В файле UI меню popup установите свойство self_layout равным «menu» и свойство close_when_click_outside равным «true», чтобы закрыть меню, когда пользователь щёлкает за пределами меню. Код выглядит следующим образом:
<!-- awtk/design/default/ui/menu_point.xml -->
<popup style="dark" self_layout="menu(w=128,h=90)" close_when_click_outside="true">
  ...
</popup>
  1. После завершения дизайна меню в исходном коде зарегистрируйте событие EVT_CONTEXT_MENU для соответствующего элемента управления. Например, здесь регистрируется событие для кнопки «open:menu_point». В функции обратного вызова события откройте файл UI меню, созданный на шаге 1.
/* awtk/demos/demo_ui_app.c */
static ret_t on_context_menu(void* ctx, event_t* e) {
  open_window("menu_point", NULL);

  return RET_OK;
}

static ret_t install_one(void* ctx, const void* iter) {
  widget_t* widget = WIDGET(iter);
  widget_t* win = widget_get_window(widget);

  if (widget->name != NULL) {
    const char* name = widget->name;
    if (strstr(name, "open:") != NULL) {
      widget_on(widget, EVT_CLICK, on_open_window, (void*)(name + 5));
      widget_on(widget, EVT_LONG_PRESS, on_open_window, (void*)(name + 5));
      if (tk_str_eq(name, "open:menu_point")) {
        widget_on(widget, EVT_CONTEXT_MENU, on_context_menu, win);
      }
...
  return RET_OK;
}
  1. Запустите программу awtk/bin/demoui, откройте страницу «ContextMenu» и щёлкните правой кнопкой мыши по кнопке «Point». Результат должен быть таким, как показано на рисунке ниже.

Контекстное меню

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master