Qt動態設置樣式,實現樣式實時切換

文章目錄

    • 概要
      • 插件實現界面
    • 核心代碼
      • 設置樣式
    • 擴展
      • 導入樣式
      • 導出樣式

概要

最近需要設計界面,但是使用Qt的Designer只能看到每個界面單獨的樣式,程序中有些事需要主界面調用進行組合的界面,因此需要寫一個插件Ui可以直接輸入樣式內容,進行實時設置,查看樣式效果。

插件實現界面

  • 應用樣式前

在這里插入圖片描述

  • 應用樣式后
    在這里插入圖片描述

核心代碼

設置樣式

void SetSheetStyle::on_pbtn_Apply_clicked()
{qApp->setStyleSheet(ui->pte_SheetStyle->toPlainText());qApp->style()->unpolish(qApp);    qApp->style()->polish(qApp);
}

詳解:
設置樣式代碼為:A->setStyleSheet(ui->pte_SheetStyle->toPlainText());
如果為程序全局設置則A為qApp;
如果為特定的Ui控件設置則A為控件名。

注意:
當程序已經設置了樣式之后,再次設置樣式必須添加
qApp->style()->unpolish(qApp);
qApp->style()->polish(qApp);
這兩行代碼,因為給qApp設置樣式前,需要卸載當前樣式,之后安裝樣式才能生效


擴展

我上面的實現里面添加了導入外部的樣式表和將當前樣式表導出為qss文件的功能,如需,可以添加。

導入樣式

void SetSheetStyle::on_pbtn_importQss_clicked()
{// 1. 獲取打開路徑QString path = QCoreApplication::applicationDirPath();QString fileName = QFileDialog::getOpenFileName(nullptr,                   // 父窗口"打開文件",                // 對話框標題path,          // 默認目錄"文本文件 (*.txt);;所有文件 (*)" // 文件過濾器);// 檢查用戶是否取消了對話框if (fileName.isEmpty()) {QMessageBox::warning(nullptr, "警告", "未選擇文件路徑!");return;}// 2. 創建并打開文件QFile file(fileName);if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {QMessageBox::critical(nullptr, "錯誤", "無法打開文件:" + file.errorString());return;}// 3. 讀取內容QTextStream in(&file);QString str = in.readAll();// 4. 關閉文件(QFile析構時會自動關閉,但顯式關閉更好)file.close();// 5. 顯示到文本框ui->pte_SheetStyle->setPlainText(str);}

導出樣式

void SetSheetStyle::on_pbtn_ExportQss_clicked()
{   // 1. 獲取保存路徑QString path = QCoreApplication::applicationDirPath();QString fileName = QFileDialog::getSaveFileName(nullptr,                   // 父窗口"保存文件",                // 對話框標題path,          // 默認目錄"文本文件 (*.txt);;所有文件 (*)" // 文件過濾器);// 檢查用戶是否取消了對話框if (fileName.isEmpty()) {QMessageBox::warning(nullptr, "警告", "未選擇文件路徑!");return;}// 2. 創建并打開文件QFile file(fileName);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {QMessageBox::critical(nullptr, "錯誤", "無法創建文件:" + file.errorString());return;}// 3. 寫入內容/*QTextStream out(&file);out << str.data();*/QString str = ui->pte_SheetStyle->toPlainText();const char* data = str.toStdString().c_str();file.write(data);// 4. 關閉文件(QFile析構時會自動關閉,但顯式關閉更好)file.close();// 可選:提示成功QMessageBox::information(nullptr, "成功", "文件已保存至:" + fileName);
}

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

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

相關文章

集成學習之隨機森林

目錄 一、集成學習的含義 二、集成學習的代表 三、集成學習的應用 1、分類問題集成。&#xff08;基學習器是分類模型&#xff09; 2、回歸問題集成。&#xff08;基學習器是回歸模型&#xff09; 3、特征選取集成。 四、Bagging之隨機森林 1、隨機森林是有多個決策樹&a…

矩陣期望 E 的含義:概率

矩陣期望 E 的含義:概率 期望的含義 在概率論和統計學中,數學期望(或均值,簡稱期望)是試驗中每次可能結果的概率乘以其結果的總和,是最基本的數學特征之一,它反映隨機變量平均取值的大小。用公式表示,如果離散型隨機變量 X X X 可能取值為 x i x_

Qt Graphics View

Graphics View框架是用來處理大量2D圖形對象的&#xff0c;適合需要高效管理和交互的場景&#xff0c;比如繪圖軟件、地圖編輯或者游戲。它和QPainter的區別在于&#xff0c;Graphics View提供了更高級別的對象管理&#xff0c;而QPainter更偏向于直接繪制。 一、核心組件 ?Q…

卷積神經網絡 - 卷積層(具體例子)

為了更一步學習卷積神經網絡之卷積層&#xff0c;本文我們來通過幾個個例子來加深理解。 一、灰度圖像和彩色圖像的關于特征映射的例子 下面我們通過2個例子來形象說明卷積層中“特征映射”的概念&#xff0c;一個針對灰度圖像&#xff0c;一個針對彩色圖像。 例子 1&#x…

xlsx.utils.json_to_sheet函數詳解

xlsx.utils.json_to_sheet 是 xlsx 庫中的一個實用函數&#xff0c;用于將 JSON 數據轉換為 Excel 工作表對象。這個函數非常有用&#xff0c;尤其是在你需要從數據庫或其他數據源獲取數據并將其導出到 Excel 文件時。 函數簽名 XLSX.utils.json_to_sheet(data, opts)data&am…

2025-03-17 學習記錄--C/C++-PTA 習題4-7 最大公約數和最小公倍數

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 習題4-7 最大公約數和最小公倍數 本題要求兩個給定正整數的最大公約數和最小公倍數。 輸入格式: 輸入在一…

【源碼閱讀】多個函數抽象為類(實現各種類型文件轉為PDF)

目錄 一、原始函數二、類三、轉換過程 一、原始函數 最開始就是寫了幾個函數&#xff08;包括doc、excel、ppt類型的文件&#xff09;轉換為pdf&#xff0c;需要將這些函數形成一個類。相似的一類函數就可以組成一個實現特定功能的類 import subprocess import pandas as pd i…

VSCode擴展工具Copilot MCP使用教程【MCP】

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一種開放標準&#xff0c;旨在統一大型語言模型&#xff08;LLM&#xff09;與外部數據源和工具之間的通信協議。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、題目描述 給定一個排序數組和一個目標值&#xff0c;在數組中找到目標值&#xff0c;并返回其索引。如果目標值不存在于數組中&#xff0c;返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法。 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: 2…

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊

【小白向】Word&#xff5c;Word怎么給公式標號、調整公式字體和花括號對齊 我的版本&#xff1a;Word 2021 如需快速查看關鍵步驟&#xff0c;請直接閱讀標紅部分。 如果遇到無法調整的情況&#xff0c;可以直接下載我的示例文檔進行參考&#xff1a;花括號和其他的示例公式.…

【算法day15】最接近的三數之和

最接近的三數之和 給你一個長度為 n 的整數數組 nums 和 一個目標值 target。請你從 nums 中選出三個整數&#xff0c;使它們的和與 target 最接近。 這里是引用 返回這三個數的和。 假定每組輸入只存在恰好一個解。 https://leetcode.cn/problems/3sum-closest/submissions/61…

Blender-MCP服務源碼5-BlenderSocket插件安裝

Blender-MCP服務源碼5-BlenderSocket插件安裝 上一篇講述了Blender是基于Socket進行本地和遠程進行通訊&#xff0c;現在嘗試將BlenderSocket插件安裝到Blender中進行功能調試 1-核心知識點 將開發的BlenderSocket插件安裝到Blender中 2-思路整理 1&#xff09;將SocketServe…

【MySQL數據庫】存儲過程與自定義函數(含: SQL變量、分支語句、循環語句 和 游標、異常處理 等內容)

存儲過程&#xff1a;一組預編譯的SQL語句和流程控制語句&#xff0c;被命名并存儲在數據庫中。存儲過程可以用來封裝復雜的數據庫操作邏輯&#xff0c;并在需要時進行調用。 類似的操作還有&#xff1a;自定義函數、.sql文件導入。 我們先從熟悉的函數開始說起&#xff1a; …

ASP3605抗輻照加固同步降壓調節器——商業航天電源芯片解決方案新選擇

ASP3605企業宇航級型號ASP3605S2U通過SEU≥75 MeVcm/mg與SEL≥75 MeVcm/mg抗輻射測試。其輸入電壓4V至15V&#xff0c;輸出電流5A&#xff0c;支持多相級聯與冗余設計&#xff0c;適用于衛星、航天器電源系統。 面向航天場景的核心功能設計 1. 抗輻射與可靠性保障 單粒子效應…

使用fastapi部署stable diffusion模型

使用vscode運行stable diffusion模型&#xff0c;每次加載模型都需要10分鐘&#xff0c;為算法及prompt調試帶來了極大麻煩。使用jupyter解決自然是一個比較好的方案&#xff0c;但如果jupyter由于種種原因不能使用時&#xff0c;fastapi無疑成為了一個很好的選擇。 參考github…

2025-03-16 學習記錄--C/C++-PTA 習題4-4 特殊a串數列求和

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 習題4-4 特殊a串數列求和 給定兩個均不超過9的正整數a和n&#xff0c;要求編寫程序求aaaaaa?aa?a&#x…

ffmpeg庫視頻硬編碼使用流程

?一、硬件編碼核心流程? ?硬件設備初始化 // 創建CUDA硬件設備上下文? AVBufferRef *hw_device_ctx NULL; av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA, NULL, NULL, 0);// 綁定硬件設備到編碼器上下文? codec_ctx->hw_device_ctx av_buffer_…

【設計模式】3W 學習法全面解析 7 大結構型模式:Java 實戰 + 開源框架應用

3W 學習法總結結構型模式&#xff08;附 Java 代碼實戰及開源框架應用&#xff09; 結構型模式 主要關注 類與對象的組合&#xff0c;確保不同組件之間能夠高效協作&#xff0c;提高系統的靈活性和可維護性。本文采用 3W 學習法&#xff08;What、Why、How&#xff09;&#x…

在大數據開發中ETL是指什么?

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字經濟時代&#xff0c;數據已成為企業最核心的資產。然而&#xff0c;分散在業務系統、日志文件…

前端面試項目拷打

Axios相關 1.在Axios二次封裝時&#xff0c;具體封裝了哪些內容&#xff0c;如何處理請求攔截和響應攔截&#xff1f; axios二次封裝的目的&#xff1a;為了統一處理請求和響應攔截器、錯誤處理、請求超時、請求頭配置等&#xff0c;提高代碼可維護性和復用性。 首先創建axios…