Qt 中使用 QDialog 類實(shí)現(xiàn)對(duì)話框,通常是設(shè)計(jì)一個(gè)類繼承 QDialog。Qt 的對(duì)話框分為模態(tài)對(duì)話框和非模態(tài)對(duì)話框,即阻塞和非阻塞對(duì)話框,而模態(tài)對(duì)話框又有兩種:應(yīng)用程序級(jí)別的和窗口級(jí)別的,分別指完成對(duì)話框之前阻塞整個(gè)應(yīng)用和阻塞關(guān)聯(lián)窗口。
QDialog dialog;
dialog.setWindowTitle(tr("dialog"));
dialog.exec();
// dialog.open();
// dialog.show();
上述代碼中 exec() 和 open() 分別為應(yīng)用程序級(jí)別和窗口級(jí)別的模態(tài)對(duì)話框,show() 則為非模態(tài)對(duì)話框。
建立在堆上加父窗口指針來自動(dòng)銷毀,setAttribute() 可設(shè)置對(duì)話框關(guān)閉時(shí)自動(dòng)銷毀對(duì)話框,QObject 的 deleteLater() 可在事件循環(huán)結(jié)束時(shí)銷毀對(duì)話框(需要使用 exec() 開始事件循環(huán))。