Qt::WidgetFlags 屬性解釋

QDialog::QDialog ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 )
構造一個父對象爲parent、名稱爲name的對話框。

  1. QWidget *parent = 0是新窗口部件的父窗口部件。如果爲0(默認),新的窗口部件將是一個頂級窗口部件。如果不是,它將會使parent的一個孩子,並且被parent的幾何形狀所強迫(除非你指定WType_TopLevel作爲窗口部件標記)。
  2. const char *name = 0是新窗口部件的窗口部件名稱。你可以使用name()來訪問它。窗口部件名稱很少被程序員用到,但是對於圖形用戶界面構造程序,比如Qt設計器,是相當重要的(你可以在Qt設計器中命名一個窗口部件,並且在你的代碼中使用這個名字來連接它)。dumpObjectTree()調試函數也使用它。
  3. WFlags f = 0(在可用的情況下)設置窗口部件標記,默認設置對於幾乎所有窗口部件都是適用的,但是,舉例來說,一個沒有窗口系統框架的頂級窗口部件,你必須使用特定的標記
    如果modal爲假(默認),這個對話框是非模式的並且應該使用show()來被顯示。如果modal爲真,這個對話框使用exec()來被顯示,則它是模式的,也就是說會阻塞這個應用程序中其它窗口的輸入。如果modal爲真並且使用show()來被顯示,則它是半模式的。

    窗口部件f將被傳遞給QWidget的構造函數。

    如果,例如,我們不想要對話框的標題欄中“這是什麼”按鈕,在f中傳遞WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu。

    我們建議你傳遞一個非空的父對象。


    請參考QWidget::setWFlags()和Qt::WidgetFlags。


    Qt::WidgetFlags

    這個枚舉類型是用來指定窗口部件的窗口系統屬性的。它們通常情況下沒用,但是在一些場合是必需的。這些標記中的一些依賴於窗口管理器是否支持它們。

    主要類型有

    Qt::WType_TopLevel - 表明這個窗口部件是頂級的,通常有一個窗口系統框架和其它的。
    Qt::WType_Dialog - 表明這個窗口部件是頂級的,並且應該被修飾爲一個對話框(比如,作爲特色,在標題欄中沒有最大化和最小化按鈕)。如果你想使用它作爲一個模式對話框,它應該從另一個窗口中被運行,或者有一個父窗口並且這個標記必須和WShowModal一起使用。如果你使用了模式對話框,這個對話框將會防止應用程序的其它頂級窗口獲得任何輸入。WType_Dialog隱含了WType_TopLevel。我們指的是作爲一個二級窗口作爲頂級窗口需要有父窗口。(請參考 WGroupLeader。)
    Qt::WType_Popup - 表明這個窗口部件是一個彈出式的頂級窗口部件,比如它是模式的,但是供彈出菜單使用的窗口系統框架。WType_Popup隱含了WType_TopLevel。
    Qt::WType_Desktop - 表明這個窗口部件是着明。請參考下面的WPaintDesktop。WType_Desktop隱含了WType_TopLevel。
    這裏還有大量的標記可以用來自定義頂級窗口的外觀。這些對於其它窗口沒有任何效果的:

    Qt::WStyle_Customize - 表明WStyle_*標記應該被用來替換默認標記來構建窗口。
    Qt::WStyle_NormalBorder - 給窗口一個普通邊界。這個不能和WStyle_DialogBorder或WStyle_NoBorder一起使用。
    Qt::WStyle_DialogBorder - 給窗口一個窄的對話框邊界。這個不能和WStyle_NormalBorder或WStyle_NoBorder。
    Qt::WStyle_NoBorder - 產生一個沒有邊界的窗口。注意:用戶不可以通過窗口系統來移動或者重新定義無邊界窗口的大小。這個標記不可以和WStyle_NormalBorder或 WStyle_DialogBorder一起使用。在Windows中,這個標記正常工作。在X11中,這個標記的結果取決於窗口管理器和它們對於 MOTIF和/或NETWM提示的理解的能力:現在存在的現代窗口管理器中的絕大部分都可以處理這些。通過WX11BypassWM,你可以完全地繞過窗口管理器。這樣的結果就是無邊界窗口根本無法被管理了(比如,除非你手工地調用setActiveWindow()就無法獲得鍵盤輸入)。
    Qt::WStyle_NoBorderEx - 這個值是廢棄的。它的效果和使用WStyle_NoBorder是一樣的。
    Qt::WStyle_Title - 給窗口一個標題欄。
    Qt::WStyle_SysMenu - 添加一個窗口系統菜單。
    Qt::WStyle_Minimize - 添加一個最小化按鈕。注意:在Windows下,爲了使它能夠正常工作,它必須和WStyle_SysMenu一起組合使用。
    Qt::WStyle_Maximize - 添加一個最大化按鈕。注意:在Windows下,爲了使它能夠正常工作,它必須和WStyle_SysMenu一起組合使用。
    Qt::WStyle_MinMax - 和WStyle_Minimize|WStyle_Maximize是一樣的。注意:在Windows下,爲了使它能夠正常工作,它必須和WStyle_SysMenu一起組合使用。
    Qt::WStyle_ContextHelp - 添加一個上下文幫助按鈕到對話框上。
    Qt::WStyle_Tool - 使這個窗口變爲一個工具窗口。一個工具窗口經常是一個比含有正常標題欄和休息的窗口更小的窗口,很典型的用於工具按鈕的集合。如果它有一個父窗口,工具窗口將總被放在它的上面。如果它沒有父窗口,你需要考慮同時傳遞一個WStyle_StaysOnTop。如果窗口系統支持它,一個工具窗口將會被使用更亮的框架來修飾。它也可以和WStyle_NoBorder一起組合使用。
    Qt::WStyle_StaysOnTop - 通知窗口系統這個窗口應該放在所有其它窗口的上面。
    Qt::WStyle_Dialog - 表明這個窗口是它的父窗口(比如,一個對話框)的邏輯子窗口。這個窗口將沒有自己的任務欄條目並且通過窗口系統它將被保持在它的父窗口上面。通常當它的父窗口最小化時,它也最小化。如果沒有自定義,這個窗口將會被一個稍微簡單一些的標題欄修飾。這個標記被QDialog使用。
    修飾標記:

    Qt::WDestructiveClose - 當窗口部件已經接收到closeEvent(),或者當窗口部件試圖忽略closeEvent()但不能的時候,使Qt刪除這個窗口部件。
    Qt::WPaintDesktop - 把桌面的繪製事件給這個窗口部件。
    Qt::WPaintUnclipped - 使在這個窗口部件上的所有的繪製操作都不能被省略。在它前面的這個窗口部件的子窗口部件或者其它窗口部件不能把它上面的繪製區域省略掉。
    Qt::WPaintClever - 表明Qt不應該試圖優化重繪這個窗口部件,但是相反,在窗口系統上直接傳遞重繪事件。(這樣往往會產生更多的事件和更小的重繪區域。)
    Qt::WResizeNoErase - 表明重新定義窗口部件的大小不應該刪除它。這樣允許比較聰明的重繪來避免閃爍。
    Qt::WMouseNoMask - 表明即使這個窗口部件有一個障板,它想獲得它的整個矩形區域內的鼠標時間。
    Qt::WStaticContents - 表明這個窗口部件的內容是向西北方向對齊的並且是靜態度。當重新定義大小的時候,這個窗口部件將只接收它自己之內的新的可見的部分的繪製事件。
    Qt::WRepaintNoErase - 表明這個窗口繪製所有的象素。更新、滾動和焦點改變都不會因此刪除這個窗口部件。這樣允許比較聰明的重繪來避免閃爍。
    Qt::WGroupLeader - 使這個窗口爲一個組領導。一個組領導不應該有父窗口(比如,它應該是一個頂級窗口)。組領導的任何子孫窗口(直接的或見解的)都在它這個組裏,其它窗口不在。如果你從一個組中顯示一個次要的窗口(比如,顯示一個最上端父窗口爲組領導的窗口),對於組內其它窗口它是模式的,但對於組外的它是非模式的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章