2013-09-21 54 views
0

在我的應用程序,當BB 10設備處於離線狀態時...我需要顯示一個對話框,並有「確定」按鈕。按「確定」按鈕應終止應用程序!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 Cascade中執行此操作?是否有可能重寫deleteLater()SystemSlot這樣,

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

那麼它是說,沒有這樣的插槽deleteLaters()的BB ::系統中找到!

請幫幫忙,

Thankks!

回答

0

我想你只是試圖連接SystemDialogfinished信號到一個相同的對象的deleteLaters插槽(它不存在)。

嘗試像下一個代碼,其中myObject可能只是this,如果你在你的類中聲明你的插槽。

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

有關如何在你的類正確聲明新的插槽的詳細信息,請參閱signals and slots文檔。

注意:如果您確實需要關閉應用程序(不推薦),我相信您應該使用Application::instance->requestExit()來正確執行此操作。如果您不需要做任何事情,關閉應用程序前一樣,你可以直接連接信號到requestExit()插槽:

int connectResult = connect(dialog, 
          SIGNAL(finished(bb::system::SystemUiResult::Type)), 
          Application::instance, 
          SLOT(requestExit())); 
Q_ASSERT(connectResult); 
Q_RESULT(connectResult); 
+0

我同意您的文章,謝謝,但如何知道BB 10設備離線?我試過這個http://pastebin.com/9FMy7FRM,但我在控制檯上脫機了,即使我在線。我正在模擬器中測試這個。在Real BB 10設備上做了同樣的工作 – Sharath