【问题标题】:QT or QML: Catching app close event in mobile appQT 或 QML:在移动应用程序中捕获应用程序关闭事件
【发布时间】:2021-07-30 08:23:57
【问题描述】:

我有一个使用 QML MediaPlayer 播放音乐的应用程序。 途径:

   Connections {
      target: Qt.application
      onStateChanged: {
         // ...
      }
   }

我能够注意到应用何时进入后台,或者何时再次进入前台。

但是,当用户关闭应用程序时,我没有收到任何事件。问题是,播放音乐时,应用程序关闭,音乐播放继续。因此,我需要一种方法来捕捉关闭事件并停止音乐播放。

我使用的是 Ubuntu Touch,因此我没有可以捕获 closing 事件的 Window 实例。在QGuiApplication / Qt.application 中似乎也没有可行的信号;我试过捕捉lastWindowClosed,但它永远不会被触发。

长话短说: 如何在应用即将关闭时收到通知以便停止音乐播放?

我的 main.cpp 几乎是默认的,看起来像:

int main(int argc, char *argv[])
{
    QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication* app = new QGuiApplication(argc, (char**)argv);

    QQuickView *view = new QQuickView();
    view->setSource(QUrl("qrc:/Main.qml"));
    view->setResizeMode(QQuickView::SizeRootObjectToView);
    view->show();

    return app->exec();
}

【问题讨论】:

  • 你能听听你的主应用程序窗口的Component.onDestruction吗?
  • 没用。虽然没有错误,但在此处添加停止音乐播放的代码无效,并且在应用关闭后继续播放。
  • 尝试从 main.qml 中的主窗口捕获 onClosing 事件。 onClosing: { // do ur action here }
  • @RamkumarR 如上所述,我没有Window 实例。

标签: qt mobile qml forceclose


【解决方案1】:

知道了,在谷歌搜索更多之后。 QT 论坛有人透露:

   Connections {
      target: Qt.application

      onAboutToQuit: {
         audioPlayer.stop()
      }

这行得通

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2013-02-03
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    相关资源
    最近更新 更多