2010-07-09 17 views

Antwort

24

Was meinen Sie mit "Entsperren"? Nicht modal? Oder eine, die die Ausführung nicht blockiert, bis der Benutzer ok klickt? In beiden Fällen werden Sie eine QMessageBox manuell statt mit den bequemen statischen Methoden wie QMessageBox :: kritisch() usw.

In beiden Fällen erstellen müssen, Ihre Freunde sind QDialog::open() und 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) 
} 

Natürlich können Sie das in Ihre eigenen Hilfsfunktionen einbinden, so dass Sie nicht alles über Ihren Code duplizieren müssen.

+0

Thnks viel ... Ich suche 4 gleiche Sache. –