QT 或 QML:在移动应用程序中捕获应用程序关闭事件

QT or QML: Catching app close event in mobile app

我有一个使用 QML MediaPlayer 来播放音乐的应用程序。 通过:

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

我能够记录应用程序何时进入后台,或何时再次进入前台。

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

我在 Ubuntu Touch 上,因此我没有 Window 可以捕获 closing 事件的实例。在 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();
}

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

   Connections {
      target: Qt.application

      onAboutToQuit: {
         audioPlayer.stop()
      }

这个有效