Qt popup窗口半透明背景

半透明彈窗需要paintEvent()接口支持

方法一:使用setStyleSheet設置半透明樣式,如果是子窗口,則可注釋構建函數內屬性設置

class TranslucentWidget : public QWidget {
public:
?? ?explicit TranslucentWidget(QWidget *parent = nullptr) : QWidget(parent) {
?? ??? ?setObjectName("TranslucentWidget");
?? ??? ?//只設置Qt::FramelessWindowHint和WA_TranslucentBackground,半透明背景默認會鼠標穿透,即使WA_TransparentForMouseEvents置為false也一樣穿透;但追加設置Qt::Tool后,鼠標不穿透
?? ??? ?setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
?? ??? ?//必須設置這個屬性,才能支持透明背景
?? ??? ?setAttribute(Qt::WA_TranslucentBackground);
?? ?}

protected:
?? ?void paintEvent(QPaintEvent *event)
?? ?{
?? ??? ?__super::paintEvent(event);
?? ??? ?QStyleOption opt;
?? ??? ?opt.init(this);
?? ??? ?QPainter paint(this);
?? ??? ?style()->drawPrimitive(QStyle::PE_Widget, &opt, &paint, this);
?? ?}
};

使用示例:

?? ??? ?TranslucentWidget* floatWindow = new TranslucentWidget(this);
? ? ? ? floatWindow ->setStyleSheet("QWidget#TranslucentWidget{background:rgba(100, 0, 0, 100);border:2px solid red;}");
?? ??? ?floatWindow ->resize(QSize(500, 400));
?? ??? ?floatWindow ->move(QPoint(0, 0));
?? ??? ?floatWindow ->show();
?? ??? ?floatWindow ->raise();

方法二:

class TranslucentWidget : public QWidget {
public:
?? ?explicit TranslucentWidget(QWidget *parent = nullptr) : QWidget(parent) {
?? ??? ?setObjectName("TranslucentWidget");
?? ??? ?//只設置Qt::FramelessWindowHint和WA_TranslucentBackground,半透明背景默認會鼠標穿透,即使WA_TransparentForMouseEvents置為false也一樣穿透;但追加設置Qt::Tool后,鼠標不穿透
?? ??? ?setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
?? ??? ?// 必須設置這個屬性,才能支持透明背景
?? ??? ?setAttribute(Qt::WA_TranslucentBackground);
?? ?}

protected:
?? ?void paintEvent(QPaintEvent *) override {
?? ??? ?QPainter painter(this);
?? ??? ?painter.setRenderHint(QPainter::Antialiasing);

?? ??? ?// 繪制一個半透明的紅色背景
?? ??? ?painter.fillRect(rect(), QColor(100, 0, 0, 100));

?? ??? ?// 可選:繪制邊框
?? ??? ?painter.setPen(QPen(Qt::red, 2));
?? ??? ?painter.drawRect(rect().adjusted(0, 0, -1, -1)); // 調整邊框位置防止鋸齒
?? ?}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907061.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907061.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Excel快捷鍵大全

Excel快捷鍵 工作表操作快速選擇區域快速跳轉/視圖操作單元格公式批量填充與編輯功能鍵打開/關閉工作簿 工作表操作 快捷鍵功能ShiftF11(或Alt→H→I→S)默認插入新工作表到當前工作表左側的左側Alt→E→L→Enter刪除當前工作表,刪除后不可銷,須謹慎操作…

SQLMesh 用戶定義變量詳解:從全局到局部的全方位配置指南

SQLMesh 提供了靈活的多層級變量系統,支持從全局配置到模型局部作用域的變量定義。本文將詳細介紹 SQLMesh 的四類用戶定義變量(global、gateway、blueprint 和 local)以及宏函數的使用方法。 一、變量類型概述 SQLMesh 支持四種用戶定義變量…

爬蟲學習-Scrape Center spa6 超簡單 JS 逆向

關卡 spa6 電影數據網站,無反爬,數據通過 Ajax 加載,數據接口參數加密且有時間限制,適合動態頁面渲染爬取或 JavaScript 逆向分析。 首先抓包發現get請求的參數token有加密。 offset表示翻頁,limit表示每一頁有多少…

webtrees——在線協作家譜

webtrees——在線協作家譜 內容 執照編碼風格和標準介紹系統要求互聯網瀏覽器兼容性安裝升級建設與發展Gedcom(家譜)文件安全備份從備份還原 執照 webtrees:在線家譜版權所有 2022 webtrees 開發團隊 該程序是免費軟件:您可以根據…

day 37

模型的保存和加載 僅保存模型參數 - 原理:保存模型的權重參數,不保存模型結構代碼。加載時需提前定義與訓練時一致的模型類。 - 優點:文件體積小(僅含參數),跨框架兼容性強(需自行定義模型結…

MFC:獲取所有打印機的名稱(打印機模塊-2)

背景: “遍歷當前用戶的每一臺虛擬打印機,將其默認紙張設置為 A4 并設置為縱向。” 實現原理: 1.從當前用戶的注冊表讀取所有已配置的打印機; 2.遍歷每臺打印機; 3.輸出其邏輯與實際紙張大小; 4.嘗試設置…

Python驅動的游戲場景實時生成:如何用AI創造無限可能?

友友們好! 我是Echo_Wish,我的的新專欄《Python進階》以及《Python!實戰!》正式啟動啦!這是專為那些渴望提升Python技能的朋友們量身打造的專欄,無論你是已經有一定基礎的開發者,還是希望深入挖掘Python潛力的愛好者,這里都將是你不可錯過的寶藏。 在這個專欄中,你將會…

手機發熱怎么辦?

1?關閉后臺程序 👉 把后臺運行的其他程序關掉,玩游戲或看視頻前,先清理一下后臺,避免發熱 2?“脫掉”手機殼 👉夏天可以換成輕薄的散熱殼,比如金屬、亞克力材質的,或者暫時取下手機殼 3?物理…

【安全攻防與漏洞?】??HTTPS中的常見攻擊與防御??

HTTPS 中常見攻擊與防御策略涵蓋中間人攻擊(MITM)、SSL剝離、重放攻擊等,幫助構建安全的 HTTPS 通信環境: 一、中間人攻擊(MITM) 攻擊原理 場景:攻擊者通過偽造證書或劫持網絡流量&#xff0c…

如何搭建perfino監控(分析java服務性能)

本文主要解釋如何搭建perfino監控服務, 用于關注生產環境的性能指標, 提前知道什么時候達到服務器資源瓶頸, 避免資源不足時手忙腳亂~ 1. 安裝與部署? ??1. 下載與安裝? ?官網下載?:Perfino 官網 獲取最新版本(支持 Windows/Linux/macOS&#xf…

5 分鐘速通密碼學!

讓我們開始第一部分:密碼學基礎 (Cryptography Basics)。 第一部分:密碼學基礎 (Cryptography Basics) 1. 什么是密碼學? 想象一下,在古代戰爭中,將軍需要向遠方的部隊傳遞作戰指令。如果直接派人送信,信…

MyBatis入門:快速搭建數據庫操作框架 + 增刪改查(CRUD)

一、創建Mybatis的項目 Mybatis 是?個持久層框架, 具體的數據存儲和數據操作還是在MySQL中操作的, 所以需要添加MySQL驅動 1.添加依賴 或者 手動添加依賴 <!--Mybatis 依賴包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactI…

基于Ubuntu的ros版本切換

解決在同一個虛擬機中管理兩個不同版本的ros 基于Ubuntu&#xff08;20.04&#xff09; ros版本1和版本2的切換 前期準備&#xff1a;已經在Ubuntu中安裝了兩個版本的ros&#xff0c;這里以版本1的noetic和版本2的foxy為例 在bashrc中&#xff1a; # ~/.bashrc: executed by…

vue2:橫向無限輪播

子組件 <template><div class"infinite-scroll" ref"scrollContainer"><div class"scroll-content" :style"{ transform: translateX(${scrollPosition}px) }"><div v-for"(item, index) in displayItems&q…

CVE-2021-44228源碼分析與漏洞復現

漏洞概述 漏洞名稱&#xff1a;Apache Log4j2 遠程代碼執行漏洞 漏洞編號&#xff1a;CVE-2021-44228 CVSS 評分&#xff1a;10.0 影響版本&#xff1a;Apache Log4j 2.0-beta9 至 2.14.1 修復版本&#xff1a;2.15.0、2.16.0 CVE-2021-44228 是 Apache Log4j2 日志框架中因 …

2025年Google I/O大會上,谷歌展示了一系列旨在提升開發效率與Web體驗的全新功能

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

【C++指南】string(三):basic_string底層原理與模擬實現詳解

. &#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;《C指南》 期待您的關注 文章目錄 引言一、成員變量與內存管理1.1 核心成員變量1.2 內存分配策略 二、默認成員函數的實現與優化…

AWS云與第三方通信最佳實踐:安全、高效的數據交互方案

引言 在當今的云計算時代,企業經常需要在AWS云環境中存儲和處理數據,同時還需要與第三方應用或服務進行數據交互。如何安全、高效地實現這種通信是許多企業面臨的挑戰。本文將詳細探討幾種AWS云與第三方通信的方案,并分析它們的優缺點,幫助您為自己的業務場景選擇最佳解決…

AE THYRO-AX 功率控制器 THYRISTOR-LEISTUNGSSTELLER THYRISTOR POWER CONTROLLER

AE THYRO-AX 功率控制器 THYRISTOR-LEISTUNGSSTELLER THYRISTOR POWER CONTROLLER

【論文解讀】STaR:不用人類思維鏈指導,模型可以自我進化!

1st author: Eric Zelikman paper: STaR: Bootstrapping Reasoning With Reasoning | OpenReview NeurIPS 2022 code: ezelikman/STaR: Code for STaR: Bootstrapping Reasoning With Reasoning (NeurIPS 2022) 1. 當語言模型學會自我進化 Zelikman 等人提出的 STaR (Self-T…