0

スレッドでダイアログを表示しようとしていますが、初めて表示されます。

を使用isAlertしない場合、10 ~ 15 個のダイアログが表示されます

これが私のコードです:

bool isAlert;
void MyThread::ShowAlert(const QString &message)
{
    if(!isAlert){
        SystemDialog *myDialog = new SystemDialog(tr("OK"), 0); 
        myDialog->setTitle(tr("Alert")); 
        myDialog->setBody(message); 
        myDialog->setDismissAutomatically(true);
        bool success = connect(myDialog,
            SIGNAL(finished(bb::system::SystemUiResult::Type)),
            this,
            SLOT(onDialogFinished(bb::system::SystemUiResult::Type)));
         if(success)
            myDialog->show();
    }
}
void MyThread::onDialogFinished(bb::system::SystemUiResult::Type){
    isAlert=false;
}
MyThread::run(){
    while(true){        
        ...
        if(...){
            ShowAlert("Some text");
        }
    }
}

onDialogFinished はまったく機能していません。

ここで何か不足していますか?

4

1 に答える 1

0

show の代わりに myDialog->exec() を使用してみてください。私の問題を解決しました

于 2014-03-06T19:22:57.520 に答える