2010-07-09 9 views

risposta

24

Cosa intendi con "sblocco"? Non-modal? O uno che non blocca l'esecuzione fino a quando l'utente non fa clic su OK? In entrambi i casi è necessario creare un QMessageBox manualmente invece di utilizzare i metodi statici convenienti come QMessageBox :: critica() ecc

In entrambi i casi, i tuoi amici sono QDialog::open() e QMessageBox::open(QObject*, const char*):

void MyWidget::someMethod() { 
    ... 
    QMessageBox* msgBox = new QMessageBox(this); 
    msgBox->setAttribute(Qt::WA_DeleteOnClose); //makes sure the msgbox is deleted automatically when closed 
    msgBox->setStandardButtons(QMessageBox::Ok); 
    msgBox->setWindowTitle(tr("Error")); 
    msgBox->setText(tr("Something happened!")); 
    msgBox->setIcon... 
    ... 
    msgBox->setModal(false); // if you want it non-modal 
    msgBox->open(this, SLOT(msgBoxClosed(QAbstractButton*))); 

    //... do something else, without blocking 
} 

void MyWidget::msgBoxClosed(QAbstractButton*) { 
    //react on button click (usually only needed when there > 1 buttons) 
} 

Ovviamente puoi avvolgerlo nelle tue proprie funzioni di supporto in modo da non doverlo duplicare su tutto il codice.

+0

Thnks molto .. Sto guardando 4 stessa cosa. –

Problemi correlati