模態與非模態對話方塊

2021-09-27 07:47:21 字數 948 閱讀 2712

模態對話方塊就是在沒有關閉它之前,不能與同乙個應用程式的其他視窗進行互動。

非模態對話方塊就是既可以與它互動也可以與同乙個應用程式的其他視窗進行互動。

下面看《qt快速入門第三版》裡專案03/3-3的例子

#ifndef mywidget_h

#define mywidget_h

#include namespace ui

class mywidget : public qwidget

;#endif // mywidget_h

#include "mywidget.h"

#include "ui_mywidget.h"

#include mywidget::mywidget(qwidget *parent) :

qwidget(parent),

ui(new ui::mywidget)

mywidget::~mywidget()

對於為什麼mywidget類是這樣構造的,ui::mywidget是怎麼來的,具體可以看到第二章的內容。

在mywidget類的設計裡,在建構函式裡設定了ui之後,就建立了對話方塊。然後重點來了,設定對話方塊的模態有兩種方法。

方法一:

直接調對話方塊的show(),這樣的效果是非模態。但要注意的是如果要這樣做,請你用new的方式來建立對話方塊。因為在建構函式內定義變數,那麼在建構函式結束後這個變數也會變釋放掉。

調對話方塊的exec(),這樣的效果是模態,但這樣做有乙個不好的地方是除了這個對話方塊,其他的視窗都會被暫時掛起,只有在該對話方塊關閉後才顯示。

方法二:

如上述**所示,調setmodal(),引數true就是模態,false非模態。這樣的好處就是避免了其他視窗的掛起,但是還是要new,new一下挺好的~。

模態對話方塊與非模態對話方塊

1.對話方塊分類 按工作方式不同,可將對話方塊分成兩類 模態對話方塊 modal 在關閉模態對話方塊之前,程式不能進行其他工作 如一般的 開啟檔案 對話方塊 非模態對話方塊 modeless 非模態對話方塊開啟後,程式仍然能夠進行其他工作 如一般的 查詢與替換 對話方塊 2.對話方塊建立 模態對話方...

模態對話方塊與非模態對話方塊

建立對話方塊 case id dialog text dialogbox hinst,makeintresource idd textbox hwnd,textset break 建立模態對話方塊 case id dialog tcolor dhwnd createdialog hinst,make...

模態與非模態對話方塊

vc 模態對話方塊建立 domodal 模式對話方塊關閉順序 1.onclose 訊息響應函式,響應wm close訊息,當 關閉 按鈕被單擊的時候,該函式被呼叫 2.onkillfocus 訊息響應函式,響應wm killfocus訊息,當乙個視窗即將失去鍵盤輸入焦點以前被傳送 3.ondestr...