QMessageBox::information常用
- 第一个参数parent,说明它的父组件
- 第二个参数title,也就是对话框的标题
- 第三个参数text,是对话框显示的内容
- 第四个参数buttons,声明对话框放置的按钮,默认是只放置一个OK按钮,这个参数可以使用或运算,例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox::Yes | QMessageBox::No,所有的按钮类型可以在QMessageBox声明的StandarButton枚举中找到
- 第五个参数defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。
1 2 | QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); |
Qt提供了五个类似的标准对话框
- 最后一个about()函数是没有button设置的按钮
1 2 3 4 5 6 7 8 9 10 | QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); QMessageBox::about(NULL, "About", "About this application"); |
自定义图标的MessageBox
- 这里我们使用的是exec()函数,而不是show(),因为这是一个模态对话框,需要有它自己的事件循环,否则的话,我们的对话框会一闪而过
1 2 3 | QMessageBox message(QMessageBox::NoIcon, "Title", "Content with icon."); message.setIconPixmap(QPixmap(":/image/icon.png")); message.exec(); |
处理对话框的交互
- static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对用户的操作做出相应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | QMessageBox::StandardButton button= QMessageBox::question(NULL, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); if(button == QMessageBox::Yes) { QMessageBox::aboutQt(NULL, "About Qt"); } //如果是自定义的对话框 QMessageBox message(QMessageBox::NoIcon, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, NULL); if(message.exec() == QMessageBox::Yes) { QMessageBox::aboutQt(NULL, "About Qt"); } |