从N9上的Apps Screen恢复MeeGo Harmattan Qt应用程序

时间:2012-02-14 09:58:21

标签: c++ qt meego-harmattan

我正在尝试在Ovi商店上发布我的第一个N9应用程序,但我的质量保证未通过:

摘要:在后台挂起应用程序后,应用程序无法通过单击应用程序图标返回到前端。 重现步骤: 1.下载并安装内容。 2.启动应用程序。 3.在后台暂停应用程序。 4.单击应用程序图标。 实际结果:单击应用程序图标时没有响应。 预期结果:应用程序回到正面。内容文件中的功能和控件必须按指定的方式运行。

我的应用程序是用Qt用C ++编写的,有一个QWidget。 在我正在调用的主函数中

Widget w;
w.showFullScreen();

我也覆盖了eventFilter

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange && m_created) {
        if (isActiveWindow()) {
            resume();
        }
        else {
            pause();
        }
    }

    return QWidget::eventFilter(object, event);
}

但是在复制bug时,我根本没有得到eventFilter。当我按下图标时,我该怎么做才能回到我的应用程序?

2 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是使用applauncherd通过调用invoker启动您的应用。您还可以使用其助推器功能来改善应用的启动时间(使用MDeclarativeCache)。

以下是有关如何使用调用者的文档:
http://harmattan-dev.nokia.com/docs/platform-api-reference/showdoc.php?pkn=applauncherd-user-documentation&wb=daily-docs&url=Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtdXNlci1kb2N1bWVudGF0aW9u

这是如何使用MDeclarativeCache
http://harmattan-dev.nokia.com/docs/platform-api-reference/showdoc.php?pkn=applauncherd-mdeclarativecache-documentation&wb=daily-docs&url=Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtbWRlY2xhcmF0aXZlY2FjaGUtZG9jdW1lbnRhdGlvbg%3D%3D

答案 1 :(得分:0)

经过一些实验,我找到了解决方案。这有点奇怪,但它确实有效:

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange)
    {
        if (isActiveWindow())
        {
            resume();
        }
        else
        {
            pause();
        }
    }
    else if (event->type() == QEvent::SockAct) // pure magic
    {
        activateWindow();
        resume();
    }

    return QWidget::eventFilter(object, event);
}

按主屏幕上的图标后,filetr QEvent :: SockAct并恢复应用程序。