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()
}
这个有效
我有一个使用 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()
}
这个有效