Создание всплывающего меню с помощью WTemplate в qt - PullRequest
1 голос
/ 29 февраля 2020

Я хочу создать всплывающее меню с помощью WTemplate в qt. как вы знаете, с помощью WTemplate Object в Wt вы можете получить стили для объектов в файле CSS, и вам не нужно использовать функцию addStyleClass.

В приведенном ниже коде я создаю навигацию с элементом меню внутри него. С другой стороны, я создаю всплывающее меню, но когда я хочу установить это всплывающее меню на пункт меню, я сталкиваюсь с проблемой, что я не знаю, как это сделать? Обратите внимание, что я хочу сделать это только с помощью WTemplate.

<messages>
   <message id="2th_level_logo_template">
      ${POPUP_MENUE_SECTION class="logo_left w3-hide-small w3-bar-item w3-button fa"}
   </message>
   <message id="3th_level_logo_template">
      ${ITEM_POPUP_MENUE class="logo_left"}
   </message>
   <message id="w3_Template">
     ${NAVIGATION_SECTION class="w3-top w3-bar w3-white w3-card"}
   </message>
</messages>

    std::unique_ptr<WTemplate> w3_t = make_unique<WTemplate>(WString::tr("w3_Template"));
    std::unique_ptr<WNavigationBar> nav_section = std::make_unique<WNavigationBar>();
    std::unique_ptr<WTemplate> w3_popup_menu_item_logo = make_unique<WTemplate>(WString::tr("2th_level_logo_template"));
    std::unique_ptr<WMenuItem> popup_menu_item = std::make_unique<WMenuItem>(WString::tr("language_nvg"));
    popup_menu_item->setIcon("popup_down_arrow.png");
    std::unique_ptr<WTemplate> w3_popup_menu_logo = make_unique<WTemplate>(WString::tr("3th_level_logo_template"));
    std::unique_ptr<WPopupMenu> popup_menu = std::make_unique<WPopupMenu>();    
    popup_menu->addItem(WString::tr("language_prs"));
    popup_menu->addSeparator();
    popup_menu->addItem(WString::tr("language_eng"));
    w3_popup_menu_logo->bindWidget("ITEM_POPUP_MENUE", move(popup_menu));
    popup_menu_item->setMenu(std::unique_ptr<WPopupMenu>(dynamic_cast<WPopupMenu*>(w3_popup_menu_logo->resolveWidget("ITEM_POPUP_MENUE"))));
    w3_popup_menu_item_logo->bindWidget("POPUP_MENUE_SECTION", move(popup_menu_item));
    nav_section->addWidget(move(w3_popup_menu_item_logo));
    w3_t->bindWidget("NAVIGATION_SECTION", move(nav_section));
...