一、前言
??????? QDialog類繼承于QWidget,是Qt基于對(duì)話框窗口(消息窗口QMessageBox、顏色選擇窗口QColorDialog、文件選擇窗口QFileDialog等)的基類。
?????????QDialog窗口是頂級(jí)的窗口,一般情況下,用來當(dāng)做用戶短期任務(wù)(確認(rèn)、輸入、選擇)或者和用戶交流(提示、錯(cuò)誤、警告、進(jìn)度等)的彈窗,彈窗可以是模態(tài)modal或者非模態(tài)的,使用exec()進(jìn)入模態(tài)對(duì)話框,使用show()進(jìn)入非模式對(duì)話框,模式對(duì)話框可以保證子窗口一直在父窗口的頂部并默認(rèn)居中顯示。
??????? 模態(tài)窗口:模態(tài)對(duì)話框是一種阻止同一應(yīng)用程序中其他可見窗口輸入的對(duì)話框。通常,用于向用戶請(qǐng)求文件名或設(shè)置應(yīng)用程序首選項(xiàng)的對(duì)話框是模態(tài)的。打開應(yīng)用程序模態(tài)對(duì)話框時(shí),用戶必須在訪問應(yīng)用程序中的任何其他窗口之前完成與對(duì)話框的交互并關(guān)閉它。窗口模態(tài)對(duì)話框僅阻止對(duì)話框關(guān)聯(lián)的窗口的訪問,允許用戶繼續(xù)使用應(yīng)用程序中的其他窗口。
QDialog *dia = new QDialog(this);
dia->resize(500,400);
dia->setWindowTitle("my dialog");
dia->setSizeGripEnabled(true);
dia->exec();
?
二、QDialog類
1、modal
??????? 該屬性表示窗口是否為模式窗口,默認(rèn)為非模式對(duì)話框fase。
bool isModal() const
void setModal(bool modal)
2、sizeGripEnabled
??????? 該屬性表示窗口是否在右在下角顯示一個(gè)控制大小的部件QSizeGrip,參考上例。 ????
bool isSizeGripEnabled() const
void setSizeGripEnabled(bool)
3、公共函數(shù)
?1)result
??????? 返回模式對(duì)話框返回的結(jié)果,QDialog::Accepted或者QDialog::Rejected。
int result() const
??????? 子類QMessageBox在此方法中返回的是按鈕的值。?
?
2)setResult
??????? 設(shè)置模式對(duì)話框的結(jié)果,QDialog::Accepted或者QDialog::Rejected。
void setResult(int i)
3)accept
??????? 關(guān)閉窗口,result返回值為QDialog::Accepted。
virtual void accept()
4)reject
????????關(guān)閉窗口,result返回值為QDialog::Rejected。
virtual void reject()
5)exec
??????? 模式對(duì)話框打開窗口,并代碼阻塞,知道用戶關(guān)閉窗口,返回一個(gè)狀態(tài)值。
virtual int exec()
6)open
??????? 模式對(duì)話框打開窗口,并且立即返回,不會(huì)阻塞,和setModal為true,然后調(diào)用show,效果一樣。
virtual void open()
7)done
????????關(guān)閉對(duì)話框并將其結(jié)果代碼設(shè)置為r。
????????finished()信號(hào)將發(fā)出r。
????????如果r是QDialog::Accepted或QDialog::Rejected,則也將分別發(fā)出Accepted()或Rejected()信號(hào)。
????????如果使用exec()顯示此對(duì)話框,done()也會(huì)導(dǎo)致本地事件循環(huán)結(jié)束,并且exec()返回r。
????????如果設(shè)置了Qt::WA_DeleteOnClose標(biāo)志,done()將刪除對(duì)話框。
virtual void done(int r)
4、信號(hào)
1)accepted
????????當(dāng)對(duì)話框被用戶接受,或者使用QDialog:: accepted參數(shù)調(diào)用accept()或done()時(shí),就會(huì)發(fā)出這個(gè)信號(hào)。
????????注意,當(dāng)使用hide()或setVisible(false)隱藏對(duì)話框時(shí),不會(huì)發(fā)出這個(gè)信號(hào)。這包括在對(duì)話框可見時(shí)刪除它。????????
void accepted()
?2)finished
????????當(dāng)用戶調(diào)用done()、accept()或reject()設(shè)置了對(duì)話框的結(jié)果代碼時(shí),就會(huì)發(fā)出這個(gè)信號(hào)。
????????注意,當(dāng)使用hide()或setVisible(false)隱藏對(duì)話框時(shí),不會(huì)發(fā)出這個(gè)信號(hào)。這包括在對(duì)話框可見時(shí)刪除它。文章來源地址http://www.zghlxwxcb.cn/news/detail-693429.html
void finished(int result)
3)rejected
????????當(dāng)對(duì)話框被用戶拒絕,或者使用QDialog:: rejected參數(shù)調(diào)用reject()或done()拒絕時(shí),就會(huì)發(fā)出這個(gè)信號(hào)。文章來源:http://www.zghlxwxcb.cn/news/detail-693429.html
????????注意,當(dāng)使用hide()或setVisible(false)隱藏對(duì)話框時(shí),不會(huì)發(fā)出這個(gè)信號(hào)。這包括在對(duì)話框可見時(shí)刪除它。
void rejected()
到了這里,關(guān)于Qt應(yīng)用開發(fā)(基礎(chǔ)篇)——對(duì)話框窗口 QDialog的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!