2012-02-28 35 views
5

viết trong QT và QErrorMessage theo mặc định có hộp kiểm nói:Remove hộp kiểm từ QErrorMessage

Hiện thông điệp này một lần nữa

Có một số cách để loại bỏ hộp kiểm này, vì vậy người dùng sẽ không có thể tắt tin nhắn này?

Trả lời

8

Thay vì sử dụng QErrorMessage hãy sử dụng QMessageBox::critical hoặc QMessageBox::warning.

Nếu bạn cần tùy chỉnh thêm hộp thư, bạn có thể tạo một phiên bản QMessageBox và sau đó exec.

+0

Cảm ơn bạn! Điều này hoàn toàn giải quyết được vấn đề của tôi! – Uko

1

Bạn có thể sử dụng một QMessageBox với việc thêm thông tin lỗi chi tiết của bạn với setDetailedText()

Tôi đoán thực sự đối phó của việc sử dụng QErrorMessage là "không hiển thị một lần nữa" tùy chọn.

không kiểm tra nhưng đây là ý tưởng;

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

Nếu bạn muốn khả năng dán bản sao mà QErrorMessage có, bạn có thể tạo QDialog tùy chỉnh của riêng mình. Đầu tiên tôi sẽ thực hiện một dialog.ui với một QTextEdit (textEdit) và một QPushButton (okButton). Hãy chắc chắn rằng bạn đặt tên đối tượng hộp thoại trong .ui một cái gì đó có ý nghĩa (MessageDialog trong trường hợp này). Mã này có thể là một cái gì đó như thế này:

Trong messagedialog.h của bạn:

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

}; 

Trong messagedialog.cpp của bạn:

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

Sau đó, bất cứ nơi nào bạn muốn sử dụng nó:

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

messageDialog->exec();