QT設置widget背景圖片

首先說方法,在給widget或者frame或者其他任何類型的控件添加背景圖時,在樣式表中加入如下代碼,指定某個控件,設置其背景。

類名 # 控件名
{
填充方式:圖片路徑
}
例如:
QWidget#Widget
{border-image: url(:/resource/bg2.png);
}
或者
QFrmae#frame
{border-image: url(:/resource/bg2.png);
}

如果單純改變樣式表,沒有指定控件的話,內部的其他控件背景也會改變。

特別提醒:類名 # 控件名,其中控件名要準確,假如你把widget的名字改成了其他,那么這里的控件名要一致。

錯誤示范:

如圖:效果非常雜亂。

正確示范:

效果:只有指定的widget背景改變,widget內部控件背景不變

我們知道Qt中所有界面類的祖先是QWidget,因此學會給QWidget設置圖片是必須掌握的技能之一。但是編程是沒有標準答案的,達到同一效果可以有許多不同的方法。那么給窗口設置背景圖片又有多少種方法呢?接下來通過寫個測試例子看看。

首先使用QtCreator新建一個基于QWidget的工程,然后給工程添加一個資源文件,接著在資源文件中添加一張圖片bg.jpg。

1.使用調色板QPalette來設置圖片。

首先獲得Widget的調色板,然后設置設置調色板背景(setBrush),最后將調色板設置到Widget中。

由于圖片太大導致整個窗口顯示不下。

2.在paintEvent事件中繪制圖片。

drawPixmap在Widget的整個矩形區域繪制背景圖片,第三個參數為要繪制的圖片區域,傳入空的矩形表示整個圖片區域。

通過這種方式可以將圖片平鋪到窗口上,缺點就是要使用paintEvent事件需要新建一個類,不適合子窗口。

3. 使用樣式表(setStyleSheet).

使用樣式表可以很方便設置界面,而且非常高效,還能讓界面和邏輯分離。真的是Qt里非常好用的一個東西,設置背景圖片的語句也很簡單。

一句話就搞定了,這里使用border-image屬性可以讓圖片平鋪到窗口,效果與第二點一樣。不過在本例中由于Widget是頂層窗口,所以直接設置樣式表也不會顯示。所以樣式表比較適合子窗口來使用。

4.使用間接的方式來設置背景,比如說在窗口上覆蓋一個QLabel,這個label始終與窗口一樣大。然后在label中設置圖片,視覺效果上和直接給窗口設置背景圖片一樣。

創建一個label作為Widget的子窗口,然后設置圖片。通過在Widget的resizeEvent事件中設置label的大小與Widget一致。這里需要注意調用QLabel的setScaledContents(true),否則效果和第一種一樣。由于QLabel可以用來顯示動圖因此使用這種方式可以實現窗口的動態背景圖片。

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

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

相關文章

無涯教程-TensorFlow - 優化器

Optimizers是擴展類,其中包括用于訓練特定模型的附加信息,Optimizers類使用給定的參數初始化,用于提高速度和性能,以訓練特定模型。 TensorFlow的基本Optimizers是- tf.train.Optimizer 此類在tensorflow/python/training/opti…

C語言:深度學習知識儲備

目錄 數據類型 每種類型的大小是多少呢? 變量 變量的命名: 變量的分類: 變量的作用域和生命周期 作用域: 生命周期: 常量 字符串轉義字符注釋 字符串: 轉義字符 操作符: 算術操作符…

圖神經網絡 day2 圖的分類

圖神經網絡基礎算法 1 GCN2 GraphSAGE2.1 采樣:采樣固定長度的鄰居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 圖網絡的分類4.1 遞歸圖神經網絡 RGNN4.2 圖卷積神經網絡GCN4.3 圖注意力網絡 GAT4.4 圖自動編碼 GAE4.5 圖時空網絡 GSTN4.6 圖生…

typeScript 接口和類

工具: PlayGround 接口 接口用來定義對象的結構和類型,描述對象應該具有哪些屬性和方法。 它僅用于聲明,而不是實現; 這對于編寫可重用的代碼非常有用。它可用于: 關鍵字是interface, 注意:它…

OSPF在廣播類型的網絡拓撲中DR和BDR的選舉

指定路由器(DR): 一個網段上的其他路由器都和指定路由器(DR)構成鄰接關系,而不是它們互相之間構成鄰接關系。 備份指定路由器(BDR): 當DR出現問題,由BDR接…

redis事務對比Lua腳本區別是什么

redis官方對于lua腳本的解釋:Redis使用同一個Lua解釋器來執行所有命令,同時,Redis保證以一種原子性的方式來執行腳本:當lua腳本在執行的時候,不會有其他腳本和命令同時執行,這種語義類似于 MULTI/EXEC。從別…

中間件: Kafka安裝部署

單機部署 下載二進制包 cd /opt/soft/archive wget http://archive.apache.org/dist/kafka/3.2.0/kafka_2.12-3.2.0.tgz tar -zxf kafka_2.12-3.2.0.tgz -C ../ cd ../kafka_2.12-3.2.0修改配置 vim config/server.propertiesadvertised.listenersPLAINTEXT://39.105.11.50:…

C++系列-函數重載

C系列-函數重載 函數重載函數重載的條件函數重載注意事項引用作為重載函數重載遇到默認參數 函數重載 函數名可以相同, 提高復用性 函數重載的條件 同一個作用域下函數名相同函數參數不同 – 參數個數不同 – 參數順序不同 – 參數類型不同不可以使用返回值作為重…

UI和API自動化測試的失敗原因

一、UI自動化失敗原因: 界面發生了變化,但是腳本沒有更新腳本中的等待時間太短了,導致元素還沒出來就被判定為失敗了網絡因素,網絡如果太慢的話,界面元素的顯示就會滯后執行的時候突然彈出一個窗口影響了元素的定位Ag…

Python web實戰之Django 的跨站點請求偽造(CSRF)保護詳解

關鍵詞:Python、Web、Django、跨站請求偽造、CSRF 大家好,今天我將分享web關于安全的話題:Django 的跨站點請求偽造(CSRF)保護,介紹 CSRF 的概念、原理和保護方法. 1. CSRF 是什么? CSRF&#…

微服務與Nacos概述-6

RBAC 模型 RBAC 基于角色的訪問控制是實施面向企業安全策略的一種有效的訪問控制方式。 基本思想是,對系統操作的各種權限不是直接授予具體的用戶,而是在用戶集合與權限集合之間建立一個角色集合。每一種角色對應一組相應的權限。一旦用戶被分配了適當…

【MySQL】MySQL基礎知識詳解(一)

MySQL select列的別名去除重復行空值參與運算著重號查詢常數顯示表結構過濾數據 排序使用 ORDER BY 對查詢到的數據進行排序操作。使用列的別名,進行排序二級排序 分頁LIMIT 分頁顯示公式:(當前頁數減一)*每頁條數,每頁…

【AIGC】 快速體驗Stable Diffusion

快速體驗Stable Diffusion 引言一、安裝二、簡單使用2.1 一句話文生圖2.2 詳細文生圖 三、進階使用 引言 stable Diffusion是一款高性能的AI繪畫生成工具,相比之前的AI繪畫工具,它生成的圖像質量更高、運行速度更快,是AI圖像生成領域的里程碑…

【100天精通python】Day41:python網絡爬蟲開發_爬蟲基礎入門

目錄 專欄導讀 1網絡爬蟲概述 1.1 工作原理 1.2 應用場景 1.3 爬蟲策略 1.4 爬蟲的挑戰 2 網絡爬蟲開發 2.1 通用的網絡爬蟲基本流程 2.2 網絡爬蟲的常用技術 2.3 網絡爬蟲常用的第三方庫 3 簡單爬蟲示例 專欄導讀 專欄訂閱地址:https://blog.csdn.net/…

【玩轉Linux操作】crond的基本操作

🎊專欄【玩轉Linux操作】 🍔喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 🎆音樂分享【Counting Stars 】 歡迎并且感謝大家指出小吉的問題🥰 文章目錄 🍔概述🍔命令?常用選項 🍔練…

軟件-常用軟件系統架構

目錄 1.客戶端-服務器架構 2.分布式架構 3.微服務架構 4.事件驅動架構 5.單體架構 6.混合架構 當我們談論系統架構時,可以將其比喻為一座房子的設計和結構,想象一下你計劃建造一座豪華別墅,你需要考慮各種因素:如房子的大小…

linux下常見編譯問題

linux下常見編譯問題 linux-cmake靜態編譯查看系統支持的的libc版本查看程序需要的動態鏈接庫查看程序需要的libc版本freebsd下 linux-cmake靜態編譯 CMakeLists.txt 添加 set(CMAKE_EXE_LINKER_FLAGS "-static")ELF 64-bit LSB executable, AMD x86-64, version 1…

【微服務】一文了解 Nacos

一文了解 Nacos Nacos 在阿里巴巴起源于 2008 2008 2008 年五彩石項目(完成微服務拆分和業務中臺建設),成長于十年雙十一的洪峰考驗,沉淀了簡單易用、穩定可靠、性能卓越的核心競爭力。 隨著云計算興起, 2018 2018 20…

編程練習(3)

一.選擇題 第一題: 函數傳參的兩個變量都是傳的地址,而數組名c本身就是地址,int型變量b需要使用&符號,因此答案為A 第二題: 本題考察const修飾指針變量,答案為A,B,C,D 第三題: 注意int 型變…

13---內嵌HTML和React

雖然Markdown本身不支持內嵌HTML和React&#xff0c;但可以在Markdown文檔中直接插入HTML代碼和React組件。 一、在markdown中內嵌HTML 在Markdown中&#xff0c;你可以使用HTML標簽來實現更復雜的樣式和布局。例如&#xff0c;你可以使用<div>標簽來創建一個容器&#…