1. 程式人生 > >Qt 無邊框、透明、可移動、的個性窗體案例詳解

Qt 無邊框、透明、可移動、的個性窗體案例詳解

很多朋友都問透明的效果怎麼做,為什麼自己做的無邊框窗體不可移動,一個個回答的很累,乾脆寫出來分享下好了.

 int main(int argc, char *argv[]){

    QApplication::setStyle("cleanlooks");

    QApplication a(argc, argv);
    login w;
    w.setWindowTitle("ClientLogin");


    w.setWindowOpacity(1);
    w.setWindowFlags(Qt::FramelessWindowHint);
    w.setAttribute(Qt::WA_TranslucentBackground);
    w.show();
    w.move(200,100);
    return a.exec();
}

關鍵的語句,就是其中的:

w.setWindowOpacity(1);    
w.setWindowFlags(Qt::FramelessWindowHint);    
w.setAttribute(Qt::WA_TranslucentBackground);

這些語句,不知道什麼意思就摁下F1,或者直接查閱幫助文件……

對窗體無邊框的設定要寫在main裡面,這樣所有派生的子視窗,QDialog,QWidget都可繼承,  很好規劃和管理,方便統一美化設計。

以工程中一個聊天視窗為例,先用PS製作一個窗體的背景圖片,注意存為png格式,這是透明的關鍵。不會使PS,可以找些PNG資源圖片。   我的PNG透明背景圖為:

 4

將它新增到你的資源包中,然後設定為窗體的背景。     

下圖是我的工程,其中的場景設定其實也是更換組建的背景圖片嘍~~的

這個你就可以預覽到透明的無邊框窗體了,但是還有一個重要的問題,視窗竟然無法移動。
這也是無邊框導致的……具體原因我不細說,搜一下很清晰,我只說解決方案。
在每個子視窗中,都新增:

void yourwindow::mousePressEvent(QMouseEvent *event){                                                                                                        
        this->windowPos = this->pos(); 
        this->mousePos = event->globalPos();
        this->dPos = mousePos - windowPos;
}
void yourwindow::mouseMoveEvent(QMouseEvent *event){ 
        this->move(event->globalPos() - this->dPos);
}


這樣就大功告成了,執行一下看看效果,綠森林是俺滴桌面,可以忽略之。

到底

 歡迎交流

相關推薦

Qt 邊框透明移動個性窗體案例

很多朋友都問透明的效果怎麼做,為什麼自己做的無邊框窗體不可移動,一個個回答的很累,乾脆寫出來分享下好了. int main(int argc, char *argv[]){ QApplication::setStyle("cleanlooks"); QAp

LVS 負載均衡群集地址轉換模式(LVS-NAT)案例

8.4 功能 block x86_64 ati local linu 它的 har 前言 · Linux Virtual Server (LVS)是針對 Linux 內核開發的一個負載均衡項目,是由我國章文嵩博士在 98 年 5月創建。· LVS 實際上相當於基於 IP

Qt實現窗體邊框移動透明不規則顯示(需背景透明的圖片)

用Qt可以做出很炫的介面,更多的功能還有待學習^_^! 1、建構函式中需要做的設定: [cpp] view plaincopyprint? this->setWindowOpacity(1);//設定窗體不透明 this->setWind

Qt 邊框透明移動個性窗體

很多朋友都問透明的效果怎麼做,為什麼自己做的無邊框窗體不可移動,一個個回答的很累,乾脆寫出來分享下好了,我只用程式碼說話。      工程的main.cpp    int main(int argc, char *argv[]) { QApplicat

QT 建立一個 移動拉伸的邊框窗體

    在使用QT建立窗體的時候,為了使視窗美化,通常不使用QT自帶的邊框。會呼叫下面函式去除窗體邊框。setWindowFlags(Qt::FramelessWindowHint)    但是有個問題,當去除了QT自帶邊框後,窗體就變得不能移動了,也不能改變視窗大小了。這確

ie78設定iframe邊框背景透明

一般我們設定iframe無邊框背景透明程式碼如下: <iframe style="border:0;background:none;"></iframe> 現代瀏覽器如chome,firefox用上述程式碼即可實現,當

Qt 邊框無非客戶區視窗拖動縮放改變大小滑鼠變形,windows同款,完美實現

簡單點說,是在windows下實現視窗拖動和改變大小,一種方法是過載mousePressEvent系列全家福函式,然後在mouseMoveEvent中實現邊移滑鼠視窗就一邊重繪。這種方法網上資料很多,見下:這種方法缺點是移動的時候視窗閃爍厲害。摒棄。但該方法給了一個很好的思路

QT邊框移動改變大小窗體

Win8,win10都出來了,為了迎合系統的扁平化風格,專案要求窗體是無邊框,看了一下QT的主要Widget,沒有現成的,好吧,那就只有自己寫了。 在網上也看到了一些程式碼,進行小結了一下,無邊框窗體大小的改變,移動都需要自己處理,不在像有邊框的窗體一樣自動處理,處理起來目

QT實現邊框透明窗體

很簡單,兩行程式碼: setWindowFlags(Qt::Window|Qt::FramelessWindowHint| Qt::WindowStaysOnTopHint|Qt::Tool|Qt::X11BypassWindowManagerHint);   this-&

去除安卓自定義Dialog黑色背景,設置邊框透明

isf window bsp 希望 nbsp tle -name rep lan 我們在自定義Dialog的時候,往往會希望除去安卓系統定義背景和標題,以便於更好的顯示我們自己想要的效果。 其實我們只需要註意幾個地方就行了。 1.在Style文件的中定義Dialog的主題

python實現將某程式碼檔案複製/移動到指定路徑下 (檔案資料夾的移動複製刪除重新命名)

    用python實現將某程式碼檔案複製/移動到指定路徑下。 場景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相對路徑./xxx/tmp/tmp/1/不一定存在)   # -

關於自定義的Qt邊框窗體

       現在桌面軟體的設計風格已經偏向於扁平化了。那麼基於Qt開發的桌面應用也會常常被提出扁平化無邊框的需求。怎麼去掉應用程式旁邊土到渣的邊框呢?本文應該可以幫到你。 QT += core gui greaterThan(QT_MA

html5新特性與用法大全瞭解一下例如canvassvg地理定位(移動pc)拖放API(僅pc端)web Socket儲存等等!

有好多小夥伴私聊我問我html5新特性 和用法,下面我給大傢俱體介紹一下html5都新加了哪些新特性 1)新的語義標籤 footer header 等等2)增強型表單 表單2.03)音訊和視訊4)canvas 繪圖5) SVG繪圖6)地理定位7) 拖放API8)web worker 用來執行耗時任務9)web

iframe設定邊框背景透明

一般我們設定iframe無邊框背景透明程式碼如下: <iframe style="border:0;background:none;"></iframe> 現代瀏覽器如chome,firefox用上述程式碼即可實現,當

QT 邊框窗體最大化 遮擋windows工作列的問題

最近寫的一個基於QT的程式的UI,要求整個窗體的風格渾然一體。包括窗體的邊框什麼的。這個其實定義了QSS啥的就沒什麼複雜的了,純粹體力活了。但是如果想整體制定一個窗體的話就需要讓窗體的屬性是無邊框(frameless)的。只有這樣才能徹底的脫離windows的窗體管理器。才能

Qt邊框視窗,自由縮放視窗大小

1,簡介 之前介紹過實現無邊框視窗的簡單方法,包含了標題的拖拽、最大最小關閉按鈕,雙擊最大化恢復等功能。 如圖: 但是這個方案有一個缺陷,那就是不能自由縮放視窗尺寸。 如果預設尺寸不是很適合內容,那麼只能選擇最大化。 在網上找了一些方案,不是太理想。 要麼是有細節處

Qt邊框視窗實現拖動和改變大小(修改)

先前發的程式碼有問題,主要是當視窗達到最大和最小尺寸的時候視窗改變大小的實際效果不符合邏輯,現在修改以後沒問題了。 下面我主要分享一下我的思考過程: 當我們改變一個視窗的大小時,如果視窗的寬度(高度)已經最小(最大),那麼很顯然只能放大(減小),同時拖動4個

Qt邊框窗體-最大化時支援拖拽還原

目錄 一、概述 二、效果展示 三、demo製作 1、設計窗體 2、雙擊放大 四、拖拽 五、相關文章 原文連結:M

Qt邊框窗體-模擬模態窗體抖動效果

目錄 一、概述 二、效果展示 三、功能實現 四、相關文章 原文連結:Qt無邊框窗體-模擬模態窗體抖動效果 一、概述 用Qt開發windows客戶端介面確實是一大利器,兼顧效能的同

23C#:窗口的屬性和事件

c#在C#語言編程中,每一個圖形組件都有自己的屬性、方法和事件。就像易語言一樣。我們學習易語言,用的是中文,一看便知。但是,C#語言的屬性、方法和事件都是英文的。許多時候,就是因為不知道英文單詞的意思,我們就只好放棄了學習。這裏,我就把C#裏面窗口的屬性和事件的英文做個翻譯後的詳細解釋。屬性是分類的,我先寫分