Qt: Как отобразить окно сообщений, когда вы находитесь внутри функции?

Я разрабатываю с использованием Qt Nokia SDK.

У меня проблемы с отображением кнопок MessageBox при попытке отобразить окно сообщения в функция. Если я попытаюсь отобразить его в главном окне, не будет проблем с отображением кнопок.

Главное окно состоит из QStackWidget, который содержит различные виджеты.

Вот код, который работает в главном окне:

QMessageBox msgBox;
msgBox.setText("Name");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard |
                          QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

Здесь это функция и код, которые я запускаю после получения ответа на веб-запрос (отображается окно сообщения, но не кнопки.

void MainWindow::RequestReceived()
{
    QMessageBox *msgBox = new QMessageBox(this);
    msgBox->setText("Test");
    msgBox->setWindowModality(Qt::NonModal);
    msgBox->setInformativeText("Do you want to save your changes?");
    msgBox->setStandardButtons(QMessageBox::Save | QMessageBox::Discard | 
                               QMessageBox::Cancel);
    msgBox->setDefaultButton(QMessageBox::Save);
    int ret = msgBox->exec();
}

Кто-нибудь получил представление о том, что происходит?

Заранее спасибо!

Есть ли крайние случаи, которые приведут к вырожденному результату?

Известен ли этот алгоритм?

Если нет, я хотел бы быть уверен, что этот алгоритм надежен, но у меня нет математических основ для доказательства это.

Большое спасибо.

10
задан user1118321 3 March 2015 в 12:28
поделиться