默认情况下写入QT和 QErrorMessage 有复选框说明:
再次显示此消息
有没有办法删除此复选框,因此用户将无法关闭此消息?
答案 0 :(得分:9)
而不是使用QErrorMessage
使用QMessageBox::critical
或QMessageBox::warning
。
如果您需要进一步自定义消息框,可以创建QMessageBox
然后exec
的实例。
答案 1 :(得分:1)
您可以使用QMessageBox将详细错误信息添加到setDetailedText()
我想使用QErrorMessage的真正原因是“不再显示”选项。
没有测试它,但这是想法;
QMessageBox msgBox;
msgBox.setWindowTitle("Error!");
msgBox.setText("Short description");
msgBox.setDetailedText("Detailed error Information");
msgBox.exec();
答案 2 :(得分:0)
如果您想要QErrorMessage具有的复制粘贴功能,您可以创建自己的自定义QDialog。首先,我将使用QTextEdit(textEdit)和QPushButton(okButton)创建一个dialog.ui。确保将.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();