QMessageBox 的构造函数实现代码是什么
时间: 2023-08-13 22:10:14 浏览: 138
Qt之QMessageBox 自定消息提示框(二)
QMessageBox 的构造函数有多个重载,以下是其中一个常用的实现代码:
```cpp
QMessageBox::QMessageBox(QWidget *parent)
: QDialog(parent)
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setAttribute(Qt::WA_DeleteOnClose);
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this);
buttonBox->setObjectName(QStringLiteral("qt_msgbox_buttonbox"));
label = new QLabel(this);
label->setObjectName(QStringLiteral("qt_msgbox_label"));
label->setWordWrap(true);
label->setAlignment(Qt::AlignTop | Qt::AlignLeft | Qt::AlignAbsolute);
textEdit = new QTextEdit(this);
textEdit->setObjectName(QStringLiteral("qt_msgbox_textedit"));
textEdit->setReadOnly(true);
textEdit->setHtml(QString::fromLatin1("<html><body><p>%1</p></body></html>").arg(tr("Message")));
iconLabel = new QLabel(this);
iconLabel->setObjectName(QStringLiteral("qt_msgbox_iconlabel"));
iconLabel->setAlignment(Qt::AlignAbsolute | Qt::AlignTop);
iconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setTextFormat(Qt::AutoText);
setIcon(QMessageBox::NoIcon);
setStandardButtons(QMessageBox::NoButton);
}
```
这个构造函数主要是创建了一些界面元素,如 `QDialogButtonBox`、`QLabel` 和 `QTextEdit`,并设置了默认的文本、图标和按钮。在 `setAttribute` 中设置了 `Qt::WA_DeleteOnClose`,表示当对话框被关闭时会自动删除该对象。同时,通过 `setWindowFlags` 函数设置了窗口标志,去掉了上下文帮助按钮。
阅读全文