0

在我的应用程序中,当 BB 10 设备处于脱机状态时......我需要显示一个带有“确定”按钮的对话框。按下“确定”按钮应该终止应用程序!!!

 SystemDialog *dialog;
dialog = new SystemDialog(tr("OK"), 0);
dialog->setTitle(tr("Alert")); 
dialog->setBody(message); 
dialog->setDismissAutomatically(true);.
connect(dialog, SIGNAL(finished(bb::system::SystemUiResult::Type)), dialog,
        SLOT(deleteLater()));
dialog->show();

这里 deleteLater() 是 SystemSlot,它只是终止警报对话框而不是应用程序!!!如何通过 C++ 代码在 BB 10 级联中执行此操作?是否可以像这样覆盖 deleteLater() SystemSlot,

// I replaced deleteLater() with SLOT(deleteLaters()) in above code and Added this Slot
 void deleteLaters(){
  bb::Application::exit(0);
  }

然后它在说,在 bb::System 中没有找到这样的插槽 deleteLaters() !!!

请帮忙,

谢谢!!!

4

1 回答 1

0

我猜您只是想将SystemDialog finished信号连接到同一个对象的deleteLaters插槽(不存在)。

尝试类似下一个代码,如果你在你的类中声明你的插槽 myObject可能只是在哪里。this

int connectResult = connect(dialog, 
                            SIGNAL(finished(bb::system::SystemUiResult::Type)),
                            myObject, 
                            SLOT(deleteLaters()));
Q_ASSERT(connectResult);
Q_RESULT(connectResult);

有关如何在类中正确声明新插槽的更多信息,请参阅信号和插槽文档。

注意:如果你真的需要关闭应用程序(不推荐),我相信你应该使用Application::instance->requestExit()它来正确地完成它。如果您在关闭应用程序之前不需要做任何其他事情,您可以直接将信号连接到requestExit()插槽:

int connectResult = connect(dialog, 
                            SIGNAL(finished(bb::system::SystemUiResult::Type)),
                            Application::instance, 
                            SLOT(requestExit()));
Q_ASSERT(connectResult);
Q_RESULT(connectResult);
于 2013-09-22T11:25:01.777 回答