QT視窗置頂/真透明/背景模糊/非矩形/跳過工作列分頁器/無邊框/無焦點點擊/焦點穿透

來源:互聯網
上載者:User

標籤:

qt 視窗置頂/真透明/背景模糊/非矩形/跳過工作列分頁器/無邊框/無焦點點擊/焦點穿透


視窗置頂
qt 裡是 setWindowFlags(Qt::WindowStaysOnTopHint)
kde 裡是 KWindowSystem::setState(winId(), NET::KeepAbove)
這樣的置頂視窗不會處於全屏視窗的上方,如果需要真正的置頂,setWindowFlags(Qt::X11BypassWindowManagerHint) 可無視這個規則,但這樣不會出現工作列等,kimtoy 的預編輯視窗就是真正的置頂。

真透明

qt 裡是 setAttribute(Qt::WA_TranslucentBackground, true)
真透明需要視窗管理器開啟混成,否則透明地區將顯示為黑色,這時候可以用非矩形來摳去黑色地區。


背景模糊

kde 擴充 Plasma::WindowEffects::enableBlurBehind(winId(), true, /*這裡有個參數指定模糊地區*/)
背景模糊需要視窗管理器開啟模糊特效,否則無效。kde kwin 的擴充標識,其它案頭上可能沒有模糊效果。


非矩形

qt 裡是 setMask(/*這裡有個參數指定非矩形地區*/)
沒有開案頭混成的時候達到沒有黑色地區的效果,形狀複雜的話相當消耗資源,使用非透明地區作為形狀會產生邊緣鋸齒。


跳過工作列分頁器
kde 裡是 KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager)
這樣的視窗經過隱藏再顯示出來時,如果程式其它對話方塊彈出,原先設定跳過工作列分頁器的視窗將失效。解決辦法是實現 showEvent(QShowEvent* event) 中再次調用一下。kimtoy 的狀態列視窗在彈出關於kimtoy對話方塊或者設定對話方塊後就不能跳過工作列分頁器的,即通過此法解決,krunner也是這樣的。


無邊框
qt 裡是 setWindowFlags(Qt::FramelessWindowHint)
實際上只要能獲得焦點,ctrl+f3 開啟kwin的菜單還能還原的哦,比如krunner,很多plasmiod。。


無焦點點擊

qt 裡是 setAttribute(Qt::WA_X11DoNotAcceptFocus, true)
無焦點點擊的意思是用滑鼠在視窗上進行操作而不將鍵盤輸入的焦點轉移到視窗中。kimtoy 的狀態列視窗就是這樣子,滑鼠可以切換功能,但IME的各個狀態依然是輸入焦點視窗而非 kimtoy 狀態列視窗的,這樣可實現真正的 Dock。


焦點穿透
很遺憾qt沒有這個函數只好直接用x11shape的 XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0, 0, NULL, 0, ShapeSet, YXBanded)

焦點穿透的意思是所有滑鼠鍵盤操作全部會穿透視窗到下方視窗。有個 Qt::WA_TransparentForMouseEvents 可以對子組件實現,而視窗本身不行。kimtoy 沒用到這個,不過很多 osd 案頭歌詞程式經常用,網上找了下只有 gdk 的實現,於是就把 qt 的寫在這裡啦。

本文章轉自http://blog.csdn.net/outmanlee/article/details/7451097

QT視窗置頂/真透明/背景模糊/非矩形/跳過工作列分頁器/無邊框/無焦點點擊/焦點穿透

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.