1 // 相关资料:
2 // https://www.cnblogs.com/zhoug2020/p/10094855.html qt5信息提示框QMessageBox用法
3 // https://blog.****.net/weixin_40314351/article/details/106061672 将QT标准对话框由英文显示为中文
4 // https://blog.****.net/libaineu2004/article/details/19030129 如何修改Qt标准对话框的文字(例如,英文改成中文)
5 // https://blog.****.net/weixin_37633951/article/details/114699654 vs+qt 突然无法生成ts文件解决方式
6 // https://www.cnblogs.com/ppffs/p/3171565.html QMessageBox按钮简单实现中文显示
7 // https://jingyan.baidu.com/article/0eb457e53cb69f03f0a90572.html 用Qt QMessageBox类创建带汉字按钮的消息框
8 #include "mainwindow.h"
9 #include "ui_mainwindow.h"
10
11 MainWindow::MainWindow(QWidget *parent)
12 : QMainWindow(parent)
13 , ui(new Ui::MainWindow)
14 {
15 ui->setupUi(this);
16 }
17
18 MainWindow::~MainWindow()
19 {
20 delete ui;
21 }
22
23 // 常用法
24 void MainWindow::on_pushButton_clicked()
25 {
26 QMessageBox::information(NULL, "Title", "Content",
27 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
28 }
29 // 第四第五为默认参数
30 void MainWindow::on_pushButton_2_clicked()
31 {
32 QMessageBox::information(NULL, "Title", "Content");
33 }
34 // 与实例1相同
35 void MainWindow::on_pushButton_3_clicked()
36 {
37 QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No);
38 }
39 // 添加多个按钮用|运算符连接
40 void MainWindow::on_pushButton_4_clicked()
41 {
42 QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No|
43 QMessageBox::Abort);
44 }
45 // 创建消息提示框后,我们怎么知道用户点了什么呢
46 void MainWindow::on_pushButton_5_clicked()
47 {
48 QMessageBox:: StandardButton result= QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No);
49 switch (result)
50 {
51 case QMessageBox::Yes:
52 setWindowTitle("Yes");
53 break;
54 case QMessageBox::No:
55 setWindowTitle("No");
56 break;
57 default:
58 break;
59 }
60 }
61 // critical adj. 关键的; 批评的,爱挑剔的; 严重的; 极重要的;
62 void MainWindow::on_pushButton_6_clicked()
63 {
64 QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
65 }
66 // warning adj.警告的;告诫的;引以为戒的
67 void MainWindow::on_pushButton_7_clicked()
68 {
69 QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
70 }
71 // 问题;疑问;(待讨论或处理的)事情;议题;课题;怀疑;困惑
72 void MainWindow::on_pushButton_8_clicked()
73 {
74 QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
75 }
76 // 关于;对于;目的是;为了;涉及…方面;忙于;从事于
77 void MainWindow::on_pushButton_9_clicked()
78 {
79 QMessageBox::about(NULL, "About", "https://www.cnblogs.com/FKdelphi/");
80 }
81 // 创建的QMessageBox对象,而不是用上面的static函数,
82 // messageBox是函数局部变量,函数结束后它的生命周期也结束了。会出现消息框一闪而过
83 void MainWindow::on_pushButton_10_clicked()
84 {
85 QMessageBox messageBox;
86 messageBox.show();
87 }
88 // 这样就好理解了,c++函数里面的static变量在函数结束时不会被回收。
89 void MainWindow::on_pushButton_11_clicked()
90 {
91 static QMessageBox messageBox;
92 messageBox.show();
93 }
94 // 这样写也能显示提示框,但是这样会内存泄漏。
95 void MainWindow::on_pushButton_12_clicked()
96 {
97 QMessageBox *messageBox=new QMessageBox;
98 messageBox->show();
99 }
100 // 因为QMessageBox继承QDialog,而QDialog有一个神奇的函数exec(),
101 // 调用这个函数后,消息循环会在这个函数里面进行更新,而调用它的函数是被“暂停”的,
102 // 就是说等用户点击按钮后,调用exec()的函数才继续执行。
103 void MainWindow::on_pushButton_13_clicked()
104 {
105 QMessageBox messageBox(QMessageBox::NoIcon,
106 QStringLiteral("退出"), QStringLiteral("你确定要退出吗?"),
107 QMessageBox::Yes | QMessageBox::No, NULL); ;
108 int result=messageBox.exec();
109
110
111 switch (result)
112 {
113 case QMessageBox::Yes:
114 qDebug("Yes");
115 close();
116 break;
117 case QMessageBox::No:
118 setWindowTitle("No");
119 break;
120 default:
121 break;
122 }
123 }
124
125 void MainWindow::on_pushButton_14_clicked()
126 {
127 QMessageBox box(QMessageBox::Warning, QStringLiteral("警告"), QStringLiteral("不能点击这个按钮!"));
128 box.setStandardButtons(QMessageBox::Ok);
129 box.setButtonText(QMessageBox::Ok, QStringLiteral("确定"));
130 box.exec();
131 }
132
133 void MainWindow::on_pushButton_15_clicked()
134 {
135 QMessageBox box(QMessageBox::Warning, tr("Qt warning"), tr("Qt wo re you daye"));
136 box.exec();
137 }
138
139 void MainWindow::on_pushButton_16_clicked()
140 {
141 int result = QMessageBox::information(NULL,
142 QStringLiteral("提示"),
143 QStringLiteral("显示信息!"),
144 QStringLiteral("确定"),
145 QStringLiteral("取消"));
146 setWindowTitle(QString::number(result));
147 }
148
149 void MainWindow::on_pushButton_17_clicked()
150 {
151 QPushButton *okbtn=new QPushButton(QStringLiteral("确定"));
152 QPushButton *cancelbtn=new QPushButton(QStringLiteral("取消"));
153 QMessageBox *mymsgbox=new QMessageBox;
154 mymsgbox->addButton(okbtn,QMessageBox::AcceptRole);
155 mymsgbox->addButton(cancelbtn,QMessageBox::RejectRole);
156 int result = mymsgbox->exec();
157 switch (result)
158 {
159 case QMessageBox::AcceptRole:
160 qDebug("ok");
161 close();
162 break;
163 case QMessageBox::RejectRole:
164 setWindowTitle("No");
165 break;
166 default:
167 break;
168 }
169 // 你TMD记得删除呀,要不有内存泄漏。
170 return;
171 delete okbtn;
172 delete cancelbtn;
173 delete mymsgbox;
174 }
175
176 void MainWindow::on_pushButton_18_clicked()
177 {
178 QMessageBox::information(NULL,
179 QStringLiteral("提示"),
180 QStringLiteral("有人说可以修改qt_en.qm和 qt_zh_CN.qm,反正我没实现!"),
181 QStringLiteral("他娘的"));
182 }