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