如果有人在Android设备上按下后退键,我需要阻止应用程序退出,这样我就可以发送消息框询问用户是否要离开应用程序,我发现使用:
@Override
void MainWindow::onBackPressed()
{
...
}
Run Code Online (Sandbox Code Playgroud)
我可以处理那个事件,我在我的必需品项目上尝试过它并没有用.qtkeyevent可以处理这个吗?还是有其他办法吗?
我使用这个阻止它:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ( (keyCode == KeyEvent.KEYCODE_BACK) )
{
//moveTaskToBack(true);
return true;
}
if (QtApplication.m_delegateObject != null &&
QtApplication.onKeyDown != null)
return (Boolean)
QtApplication.invokeDelegateMethod(QtApplication.onKeyDown, keyCode, event);
else
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在Qt上捕获事件,以便我发送消息
以下是解决方法:
\n\n@Override\n public boolean onKeyDown(int keyCode, KeyEvent event)\n {\n int newKeyCode = keyCode;\n if ( (keyCode == KeyEvent.KEYCODE_BACK) )\n {\n newKeyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS;\n }\n if (QtApplication.m_delegateObject != null &&\nQtApplication.onKeyDown != null)\n return (Boolean)\nQtApplication.invokeDelegateMethod(QtApplication.onKeyDown, newKeyCode,\nevent);\n else\n return super.onKeyDown(newKeyCode, event);\n }\n public boolean super_onKeyDown(int keyCode, KeyEvent event)\n {\n return super.onKeyDown(keyCode, event);\n }\n\n//---------------------------------------------------------------------------\n\n @Override\n public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent\nevent)\n {\n int newKeyCode = keyCode;\n if ( (keyCode == KeyEvent.KEYCODE_BACK) )\n {\n newKeyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS;\n }\n if (QtApplication.m_delegateObject != null &&\nQtApplication.onKeyMultiple != null)\n return (Boolean)\nQtApplication.invokeDelegateMethod(QtApplication.onKeyMultiple ,newKeyCode,\nrepeatCount, event);\n else\n return super.onKeyMultiple(newKeyCode, repeatCount, event);\n }\n public boolean super_onKeyMultiple(int keyCode, int repeatCount,\nKeyEvent event)\n {\n return super.onKeyMultiple(keyCode, repeatCount, event);\n }\n\n//---------------------------------------------------------------------------\n\n @Override\n public boolean onKeyUp(int keyCode, KeyEvent event)\n {\n int newKeyCode = keyCode;\n if ( (keyCode == KeyEvent.KEYCODE_BACK) )\n {\n newKeyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS;\n }\n if (QtApplication.m_delegateObject != null &&\nQtApplication.onKeyDown != null)\n return (Boolean)\nQtApplication.invokeDelegateMethod(QtApplication.onKeyUp, newKeyCode,\nevent);\n else\n return super.onKeyUp(newKeyCode, event);\n }\n public boolean super_onKeyUp(int keyCode, KeyEvent event)\n {\n return super.onKeyUp(keyCode, event);\n } \nRun Code Online (Sandbox Code Playgroud)\n\n然后在 Qt 中:
\n\nvoid MainWindow::keyPressEvent(QKeyEvent *k)\n{\n if( k->key() == Qt::Key_MediaPrevious )\n {\n int ret = messageBox( QMessageBox::Yes | QMessageBox::No, "\xc2\xbfDesea salir de la aplicaci\xc3\xb3n?", QMessageBox::Question);\n\n switch(ret)\n {\n case QMessageBox::Yes:\n this->close();\n break;\n\n case QMessageBox::No:\n break;\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n感谢 Koying 在此处发布此解决方案http://groups.google.com/group/android-qt/browse_thread/thread/676c24e94bb9a200?pli=1
\n| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |