Qt 从QErrorMessage中删除复选框

Qt 从QErrorMessage中删除复选框,qt,checkbox,Qt,Checkbox,默认情况下,在QT和QErrorMessage中写入时,复选框会显示: 再次显示此消息 是否有办法删除此复选框,以便用户无法关闭此消息?而不是使用QErrorMessage使用或 如果需要进一步自定义消息框,您可以创建QMessageBox的实例,然后exec它。您可以使用QMessageBox,通过setDetailedText()添加详细的错误信息 我想使用QErrorMessage的真正好处是“不再显示”选项 没有测试它,但这里是想法 QMessageBox msgBox; msgBox

默认情况下,在QT和QErrorMessage中写入时,复选框会显示:

再次显示此消息


是否有办法删除此复选框,以便用户无法关闭此消息?

而不是使用
QErrorMessage
使用或


如果需要进一步自定义消息框,您可以创建
QMessageBox
的实例,然后
exec
它。

您可以使用QMessageBox,通过setDetailedText()添加详细的错误信息

我想使用QErrorMessage的真正好处是“不再显示”选项

没有测试它,但这里是想法

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

如果您想要QErrorMessage所具有的复制粘贴功能,您可以创建自己的自定义QDialog。首先,我将创建一个dialog.ui,其中包含一个QTextEdit(textEdit)和一个QPushButton(okButton)。确保将.ui中的对话框对象命名为有意义的名称(本例中为MessageDialog)。代码可以是这样的:

在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();

};
在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();
}
然后,无论您想在哪里使用它:

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

messageDialog->exec();