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

尝试使用 myDialog->exec() 而不是 show。解决了我的问题

于 2014-03-06T19:22:57.520 回答