Blackberry Cascades 上下文菜单从按钮单击

Posted

技术标签:

【中文标题】Blackberry Cascades 上下文菜单从按钮单击【英文标题】:Blackberry Cascades Context Menu From Button Click 【发布时间】:2013-07-19 14:33:28 【问题描述】:

我正在使用 BlackBerry-10 Cascades 开发应用程序。当我单击一个按钮时,我希望在右侧打开一个上下文菜单。目前我有它,以便在按住按钮后打开菜单,但我需要在点击按钮后立即打开它。我试图找到一种方法来做到这一点,但在文档中找不到它。有什么方法可以从按下按钮的 onclicked 方法调用上下文菜单?

顺便说一句:这一切都在 QML 中

【问题讨论】:

你能粘贴你用来按住打开上下文菜单的代码吗? 【参考方案1】:

我不太熟悉黑莓级联上可用的控件,但是,它似乎应该像将代码从 onPressAndHold 信号处理程序移动到 onClicked 信号处理程序一样简单。为了获得更好的帮助,您应该将代码的相关 sn-ps 与导入一起发布,以便我们可以找到更多信息以在您的特定情况下为您提供帮助。

【讨论】:

【参考方案2】:
actions: [
        //! [0]
        ActionItem 
            title: _webMaps.viewModeTitle
            imageSource: "asset:///images/map.png"
            ActionBar.placement: ActionBarPlacement.OnBar
            onTriggered: 
                _webMaps.nextViewMode()
                map.setMapType(_webMaps.viewMode);
            
        ,
        //! [0]
        ActionItem 
            title: qsTr("Waterloo")
            imageSource: "asset:///images/pin.png"
            ActionBar.placement: ActionBarPlacement.InOverflow
            onTriggered: 
                map.setCenter(43.468245, -80.519603);
            
        
    ]

试试这个示例..

【讨论】:

【参考方案3】:

理论上你应该可以做到,但我发现这个想法有两个问题:

    上下文菜单应该发布在另一个 UI 元素的上下文中。我不确定按钮可能有哪些上下文菜单项。如果您在其他控件的上下文中发布上下文菜单,那么您会迷惑用户。 不符合平台 UI 样式指南的古老问题。您会期待您的用户,他们已经花时间学习如何操作 BB10 用户界面,现在学习一组不同的界面语义。

【讨论】:

【参考方案4】:

您可以使用 BlackBerry Platform Services (BPS) 库中的上下文菜单 API。

https://developer.blackberry.com/native/reference/core/com.qnx.doc.bps.lib_ref/topic/manual/dialog.h_functionscontextmenufunctions.html?f=dialog

它本身不是“Cascades 功能”,但您可以在 Cascades 应用程序中使用它。请注意,它是一个基于 C 的 API,因此您必须创建某种“帮助类”并将其公开给 QML。

【讨论】:

【参考方案5】:

尝试this sample code 在单击按钮时打开上下文菜单。

【讨论】:

以上是关于Blackberry Cascades 上下文菜单从按钮单击的主要内容,如果未能解决你的问题,请参考以下文章

Blackberry 10 Cascades、qml (C++ & QT) 中的布局存在问题

我的 Blackberry 10 Cascades(C++、Qt 和 QML)示例应用程序在启动时崩溃并出现以下错误

BlackBerry Cascades 中的 QML 字符串

尝试在 Blackberry Cascades QT 和 QML 中下载图像

BlackBerry Cascades 10 Maps 示例一直显示黑屏

无法在 BlackBerry Cascades 中通过 https 加载 JSON 数据源