Снимите флажок из QErrorMessage - PullRequest
       0

Снимите флажок из QErrorMessage

7 голосов
/ 28 февраля 2012

запись в QT и QErrorMessage по умолчанию имеет флажок:

Показать это сообщение еще раз

Есть ли способ снять этот флажок, так что пользователь не сможет отключить это сообщение?

Ответы [ 3 ]

10 голосов
/ 28 февраля 2012

Вместо использования QErrorMessage используйте QMessageBox::critical или QMessageBox::warning.

Если вам нужно дополнительно настроить окно сообщения, вы можете создать экземпляр QMessageBox, а затем exec it.

1 голос
/ 28 февраля 2012

Вы можете использовать QMessageBox с добавлением подробной информации об ошибке с помощью setDetailedText ()

Я думаю, реальная сделка использования QErrorMessage - это опция "не показывать снова".

didnне проверяю, но вот идея;

QMessageBox msgBox;
 msgBox.setWindowTitle("Error!");
 msgBox.setText("Short description");
 msgBox.setDetailedText("Detailed error Information");
 msgBox.exec();
0 голосов
/ 23 октября 2013

Если вы хотите иметь возможность копирования и вставки, которой обладает QErrorMessage, вы можете создать свой собственный QDialog. Сначала я хотел бы создать dialog.ui с QTextEdit (textEdit) и QPushButton (okButton). Убедитесь, что вы называете объект диалога в .ui чем-то значимым (в данном случае MessageDialog). Код может выглядеть примерно так:

В вашем сообщении:

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::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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...