64 介面外觀(視窗無邊框,不規則窗體,透明窗體)

2021-09-10 16:11:01 字數 1392 閱讀 8530

視窗標誌是乙個型別(例如qt :: dialog)和零個或多個提示視窗系統(hints)(例如qt :: framelesswindowhint)的組合。 標誌qt :: windowflags(具體標誌講解見幫助文件qt :: windowflags)

利用瀏覽器翻譯外掛程式,幫助快速學習

qt中提供了部件遮罩(mask)來實現不規則窗體。例如: 先在建構函式中新增如下**:

qpixmap pix; 

pix.load(":/image/yafeilinux.png"); // 載入

resize(pix.size()); // 設定視窗大小為大小

setmask(pix.mask()); // 為視窗設定遮罩

void widget::paintevent(qpaintevent *)

利用樣式表設定部件的透明度,qpushbutton ,但這種方式不能用於頂層視窗 setwindowopacity(double x)設定視窗的透明度,整個應用程式全部透明,

setwindowflags(qt,  framelesswindowhint)和setattribute( qt: : wa_translucentbackground) 組合使用,實現窗體背景透明,部件不透明。

方式一:使用setwindowopacity()函式。例如: 建構函式裡新增一行**:

setwindowopacity(0.3);
使用setwindowopacity()函式就可以實現視窗的透明效果,它的引數取值範圍為0.0-1.0,當取值為0.0時完全透明,取值為1.0時完全不透明。

方式二:使用setattribute()函式。例如: 在建構函式中下面兩行**:

setwindowflags(qt::framelesswindowhint);

setattribute(qt::wa_translucentbackground);

這裡使用了setattribute()函式指定視窗的qt::wa_translucentbackground屬性,它可以使窗體背景透明,而其中的部件不受影響。不過在windows下,還要使用setwindowflags()函式指定qt::framelesswindowhint標誌,這樣才能實現透明效果。

方式三:在方式二的基礎上修改重繪事件。例如: 進行paintevent()函式的定義:

void widget::paintevent(qpaintevent *)

這裡先使用rect()函式獲取視窗的內部矩形,它不包含任何邊框。然後使用半透明的白色對這個矩形進行填充。

60 介面外觀(QT風格)

乙個完美的產品,不僅需要 寫的漂亮,更應該有良好的ui設計,就像iphone一樣,不僅有穩定程式,還有很好看的介面圖示 ui設計。qt是乙個跨平台的gui圖形介面框架,提供了眾多的方法和機制供開發人員使用,不僅可以使用官方提供的方法,還可以使用自己定義的方案,極大的提高了開發的效率。qt中的各種風格...

設計模式(12) 介面隔離模式(1) 外觀模式

目錄 0.介面隔離模式 1.基本介紹 2.動機 3.類圖 4.案例 影院管理專案 5.外觀模式在mybatis原始碼中的應用 6.總結 在元件構建過程中,某些介面之間直接的依賴常常會帶來很多問題 甚至根本無法實現。採用新增一層間接 穩定 介面,來隔離本來互相緊密關聯的介面是一種常見的解決方案 典型模...

九 介面總結

1,介面和抽象類讓實現和定義實現分離 2.抽象類 抽象類用abstract修飾,可包含抽象方法,和普通方法,其中抽象方法只是宣告了存在乙個方法,但不知道具體怎麼做 抽象方法 方法只有宣告沒有方法體,使用abstract進行修飾,只是宣告了乙個方法 如果乙個類有1個或多個抽象方法,那麼該類一定是抽象類...