0

私のアプリでは、BB 10 デバイスがオフラインになるたびに...「OK」ボタンを含むダイアログ ボックスを表示する必要があります。「OK」ボタンを押すと、APP を終了する必要があります !!!

 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);
  }

次に、そのようなスロットはありません deleteLaters() bb::System で見つかりました!!!

助けてください、

ありがとう!!!

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 に答える