文章目录
- 一.QMessageBox介绍
- 枚举
- 属性
- 函数
- 二.QMessageBox的用法
- 1.导入QMessage库
- 2.弹窗提示
- 3.提供选项的弹窗提示
- 4.作为提示,报警,报错提示窗口
一.QMessageBox介绍
文本消息显示框(message box)向用户发出情况警报信息并进一步解释警报或向用户提问,以及可选的详细文本以在用户请求时提供更多数据。
枚举
枚举 | 枚举值 |
---|---|
enum | ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole } |
enum | Icon { NoIcon, Question, Information, Warning, Critical } |
enum | StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask } |
flags | StandardButtons |
属性
属性名称 | 类型 |
---|---|
detailedText | QString |
standardButtons | StandardButtons |
icon | Icon |
iconPixmap | QPixmap |
informativeText | QString |
text | QString |
textFormat | Qt::TextFormat |
textInteractionFlags | Qt::TextInteractionFlags |
函数
返回值 | 函数原型 | 说明 |
---|---|---|
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint) | |
QMessageBox(QWidget *parent = nullptr) | 构造函数 | |
virtual | ~QMessageBox() | 析构函数 |
void | addButton(QAbstractButton *button, QMessageBox::ButtonRole role) | 添加按钮到消息框中 |
QPushButton * | addButton(const QString &text, QMessageBox::ButtonRole role) | 添加按钮到消息框中 |
QPushButton * | addButton(QMessageBox::StandardButton button) | 添加按钮到消息框中 |
QAbstractButton * | button(QMessageBox::StandardButton which) const | 返回与标准按钮对应的指针,如果此消息框中不存在标准按钮,则返回nullptr |
QMessageBox::ButtonRole | buttonRole(QAbstractButton *button) const | 返回指定按钮的按钮角色。如果按钮为nullptr或尚未添加到消息框,则此函数返回InvalidRole。 |
QList<QAbstractButton *> | buttons() const | 返回已添加到消息框中的所有按钮的列表。 |
QCheckBox * | checkBox() const | 返回对话框上显示的复选框。如果未设置任何复选框,则为nullptr。 |
QAbstractButton * | clickedButton() const | 返回用户单击的按钮,如果用户按Esc键且未设置转义按钮,则返回nullptr。 |
QPushButton * | defaultButton() const | 返回应该是消息框默认按钮的按钮。如果未设置默认按钮,则返回nullptr。 |
QString | detailedText() const | 保存要显示在详细信息区域中的文本。 |
QAbstractButton * | escapeButton() const | 返回按下转义时激活的按钮。 |
QMessageBox::Icon | icon() const | 保存消息框的图标 |
QPixmap | iconPixmap() const | 保存当前图标 |
QString | informativeText() const | 包含为消息提供更完整描述的信息性文本 |
void | open(QObject *receiver, const char *member) | 打开对话框并将其 finished()或 buttonClicked()信号连接到接收器和成员指定的插槽。如果slot-in成员的第一个参数有一个指针,则连接到 buttonClicked(),否则连接到finished()。 |
void | removeButton(QAbstractButton *button) | 从按钮框中删除按钮而不删除它。 |
void | setCheckBox(QCheckBox *cb) | 设置消息对话框上的复选框cb。消息框获取复选框的所有权。参数cb可以是nullptr,以从消息框中删除现有复选框。 |
void | setDefaultButton(QPushButton *button) | 将消息框的默认按钮设置为按钮。 |
void | setDefaultButton(QMessageBox::StandardButton button) | 将消息框的默认按钮设置为按钮。 |
void | setDetailedText(const QString &text) | 保存要显示在详细信息区域中的文本。 |
void | setEscapeButton(QAbstractButton *button) | 将按下Escape键时激活的按钮设置为按钮。 |
void | setEscapeButton(QMessageBox::StandardButton button) | 将按下Escape键时激活的按钮设置为按钮。 |
void | setIcon(QMessageBox::Icon) | 保存消息框的图标 |
void | setIconPixmap(const QPixmap &pixmap) | 保存消息框的图标 |
void | setInformativeText(const QString &text) | 保存要显示的消息框文本 |
void | setStandardButtons(QMessageBox::StandardButtons buttons) | 根据文本格式设置(QMessageBox::textFormat),文本将被解释为纯文本或富文本。默认设置为 Qt::AutoText,,即消息框将尝试自动检测文本的格式。 |
void | setText(const QString &text) | 保存要显示的消息框文本 |
void | setTextFormat(Qt::TextFormat format) | 保存消息框显示的文本格式 |
void | setTextInteractionFlags(Qt::TextInteractionFlags flags) | |
void | setWindowModality(Qt::WindowModality windowModality) | |
void | setWindowTitle(const QString &title) | |
QMessageBox::StandardButton | standardButton(QAbstractButton *button) const | 返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。 |
QMessageBox::StandardButtons | standardButtons() const | 返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。 |
QString | text() const | 保存要显示的消息框文本 |
Qt::TextFormat | textFormat() const | 保存消息框显示的文本格式 |
Qt::TextInteractionFlags | textInteractionFlags() const |
二.QMessageBox的用法
1.导入QMessage库
#include <QMessageBox>
2.弹窗提示
构造QMessageBox的实例,设置所需显示的消息,然后调用exec()
来显示消息。用户必须单击“确定”按钮以关闭消息框。GUI的其余部分将被阻止,直到消息框被关闭。
QMessageBox msgBox;
msgBox.setText(u8"你好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
msgBox.exec();
3.提供选项的弹窗提示
一个比仅仅提醒用户事件更好的方法是询问用户该怎么做。将问题存储在信息性文本属性中,并将标准按钮属性设置为所需的按钮集作为用户响应集。通过使用位或运算符组合StandardButtons
中的值来指定按钮。按钮的显示顺序取决于平台。例如,在Windows上,“保存”显示在“取消”的左侧,而在Mac OS上,顺序相反。要向用户提供更多信息以帮助他回答问题,通过setDetailedText
设置详细文本属性。如果设置了详细文本属性,则显示详细信息按钮。exec()
槽返回单击的按钮的StandardButtons
值。
QMessageBox msgBox;
msgBox.setText(u8"该文档已被修改.");
msgBox.setDetailedText(u8"这里是详细的提示信息");
msgBox.setInformativeText(u8"是否要保存你的修改?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::Save:
qDebug() << "save";
break;
case QMessageBox::Discard:
qDebug() << "Discard";
break;
case QMessageBox::Cancel:
qDebug() << "Cancel";
break;
default:
qDebug() << "default";
break;
}
4.作为提示,报警,报错提示窗口
int ret = QMessageBox::information(this, tr(u8"信息提示"),
tr(u8"该文档已被修改.\n"
u8"是否要保存你的修改?"),
QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Help);
对于窗口的类型,有以下几种可以选择:
内容 | 值 | 说明 |
---|---|---|
QMessageBox::NoIcon | 0 | the message box does not have any icon. |
QMessageBox::Question | 4 | an icon indicating that the message is asking a question. |
QMessageBox::Information | 1 | an icon indicating that the message is nothing out of the ordinary. |
QMessageBox::Warning | 2 | an icon indicating that the message is a warning, but can be dealt with. |
QMessageBox::Critical | 3 | an icon indicating that the message represents a critical problem. |
对于窗口中的按钮,有以下几种可以选择:
内容 | 值 | 说明 |
---|---|---|
QMessageBox::Ok | 0x00000400 | An “OK” button defined with the AcceptRole. |
QMessageBox::Open | 0x00002000 | An “Open” button defined with the AcceptRole. |
QMessageBox::Save | 0x00000800 | A “Save” button defined with the AcceptRole. |
QMessageBox::Cancel | 0x00400000 | A “Cancel” button defined with the RejectRole. |
QMessageBox::Close | 0x00200000 | A “Close” button defined with the RejectRole. |
QMessageBox::Discard | 0x00800000 | A “Discard” or “Don’t Save” button, depending on the platform, defined with the DestructiveRole. |
QMessageBox::Apply | 0x02000000 | An “Apply” button defined with the ApplyRole. |
QMessageBox::Reset | 0x04000000 | A “Reset” button defined with the ResetRole. |
QMessageBox::RestoreDefaults | 0x08000000 | A “Restore Defaults” button defined with the ResetRole. |
QMessageBox::Help | 0x01000000 | A “Help” button defined with the HelpRole. |
QMessageBox::SaveAll | 0x00001000 | A “Save All” button defined with the AcceptRole. |
QMessageBox::Yes | 0x00004000 | A “Yes” button defined with the YesRole. |
QMessageBox::YesToAll | 0x00008000 | A “Yes to All” button defined with the YesRole. |
QMessageBox::No | 0x00010000 | A “No” button defined with the NoRole. |
QMessageBox::NoToAll | 0x00020000 | A “No to All” button defined with the NoRole. |
QMessageBox::Abort | 0x00040000 | An “Abort” button defined with the RejectRole. |
QMessageBox::Retry | 0x00080000 | A “Retry” button defined with the AcceptRole. |
QMessageBox::Ignore | 0x00100000 | An “Ignore” button defined with the AcceptRole. |
QMessageBox::NoButton | 0x00000000 | An invalid button. |