使用QMessageBox,我們可以直接使用其中的靜態(tài)方法,如information(),warning()等。但是有時(shí)候我們希望自行設(shè)計(jì)對(duì)話框,但又不是建立一個(gè)新的UI文件,這時(shí)我們可以使用一下方法:
QMessageBox msgBox;
msgBox.setWindowTitle(""); //設(shè)置窗口名
msgBox.setText(""); //設(shè)置文本
msgBox.setInformativeText(""); //設(shè)置提示文本
msgBox.setStanderButtons(QMessageBox::Discard | QMessageBox::Cancel); //加入按鈕
msgBox.setButtonText(QMessageBox::Discard,""); //設(shè)置按鈕文本
msgBox.setDefaultButton(QMessageBox::Discard); //設(shè)置缺省按鈕
int ret = msgBox.exec(); //模態(tài)對(duì)話框,并獲得按鍵值
//int ret = msgBox.show(); //非模態(tài)對(duì)話框
switch(ret)
{
case QMessageBox::Discard:
//do something;
case QMessageBox::Cancel:
//do something;
}
這樣我們就自行創(chuàng)立了一個(gè)對(duì)話框,注:
(1)information(),warning()等方法是有返回值的,能獲得按鍵值,代碼中也實(shí)現(xiàn)了這一功能。
(2)模態(tài)對(duì)話框(.exce()):在對(duì)話框彈出期間,用戶不可以切換同程序下的其它窗口,直到該對(duì)話框被關(guān)閉,warning()方法達(dá)到同一效果。
(3)非模態(tài)對(duì)話框(.show()):控制權(quán)即刻返回給調(diào)用函數(shù),可以切換其他窗口,information()方法達(dá)到同一效果。