2012-02-28 22 views
5

escrito en QT y QErrorMessage por defecto tiene casilla de verificación que dice:Quitar casilla de QErrorMessage

a mostrar este mensaje

¿Hay alguna manera de eliminar esta casilla de verificación, por lo que el usuario no lo hará ser capaz de desactivar este mensaje?

Respuesta

8

En lugar de usar QErrorMessage use QMessageBox::critical o QMessageBox::warning.

Si necesita personalizar aún más el cuadro de mensaje, puede crear una instancia de QMessageBox y luego exec.

+0

¡Gracias! ¡Esto soluciona totalmente mis problemas! – Uko

1

Se puede utilizar un QMessageBox con la adición de su información de error detallada con setDetailedText()

supongo que la cantidad real de la utilización QErrorMessage es la opción "No volver a mostrar".

no lo probé pero aquí está la idea;

QMessageBox msgBox; 
msgBox.setWindowTitle("Error!"); 
msgBox.setText("Short description"); 
msgBox.setDetailedText("Detailed error Information"); 
msgBox.exec(); 
0

Si desea la capacidad de copiar y pegar que tiene QErrorMessage, puede crear su propio QDialog personalizado. Primero haría un dialog.ui con un QTextEdit (textEdit) y un QPushButton (okButton). Asegúrese de nombrar el objeto de diálogo en .ui algo significativo (MessageDialog en este caso). El código podría ser algo como esto:

En su messagedialog.h:

class MessageDialog : public QDialog, public Ui::MessageDialog 
{ 
    Q_OBJECT 

private: 
    Ui::MessageDialog *ui; 

public: 
    MessageDialog(QWidget * parent = 0, QString msg = "", uint w = 200, uint h = 100); 

private slots: 

    void on_okButton_clicked(); 

}; 

En su messagedialog.cpp:

MessageDialog::MessageDialog(QWidget *parent, QString msg, uint w, uint h) : QDialog(parent), ui(new Ui::MessageDialog) 
{ 
    ui->setupUi(this); 

    this->setFixedSize(w, h); 
    this->ui->textEdit->setFixedSize((w - 20), (h - 50)); 
    this->ui->textEdit->setGeometry((this->geometry().left() + 10), 10, (ui->okButton->size().width()), (ui->okButton->size().height())); 

    // I personally like to get rid of the ? next to close in the upper right, minimize, and maximize 
    this->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); 
    this->setWindowFlags(windowFlags() & ~Qt::WindowMinimizeButtonHint); 
    this->setWindowTitle("Message"); 
    this->ui->textEdit->setText(msg); 
    this->ui->okButton->setGeometry((this->geometry().center().x() - (this->ui->okButton->width()/2)), (this->geometry().bottom() - (this->ui->okButton->height())) - 5, (ui->okButton->size().width()), (ui->okButton->size().height())); 
    this->setFocus(); 
} 

void MessageDialog::on_okButton_clicked() 
{ 
    this->close(); 
} 

Entonces dondequiera que desee utilizarlo:

QDialog *messageDialog = new MessageDialog(this, msg); 

messageDialog->exec();