Qt 界面上字體自適應控件大小 - 隨控件縮放

Qt 界面上字體自適應控件大小 - 隨控件縮放

  • 引言
  • 一、設計思路
  • 二、進階版大致思路
  • 三、參考鏈接

引言

在這里插入圖片描述

Qt控件自適應字體大小可以用adjustSize()函數,但字體自適應控件大小并沒有現成的函數可調. - 本文實現了按鈕上的字體隨按鈕大小變化而變化 (如上圖所示) - 其他控件同理。

  • 核心思路:根據控件的大小變化,同步調整字體的大小 - 重寫resizeEvent函數

一、設計思路

本意是字體隨按鈕變化,實際上實現的是字體隨窗體變化,由于按鈕也隨窗體變化,可以說是近似等價的實現 - 想變成隨按鈕變化也簡單,將窗體高和寬換成按鈕的即可:

    1. 在頭文件聲明高、寬和字體大小,并在構造函數中初始化 (記錄,以便后續對比)
    this->width = this->size().width();this->height = this->size().height();this->fontsize = ui->pushButton->font().pointSize();
    1. 在窗體resizeEvent函數中,對比窗體高和寬的變化率,按照最小的變化率 (保證字體顯示完整) 來控制字體大小。
void Widget::resizeEvent(QResizeEvent *event)
{int w = event->size().width();int h = event->size().height();double scale = 1.0;scale = 1.0 * w/this->width;if(scale < 1.0 * h/this->height){scale = 1.0 * h/this->height;}QFont font = ui->pushButton->font();int new_fontsize = scale * this->fontsize;if(new_fontsize != ui->pushButton->font().pointSize()){font.setPointSize(new_fontsize);ui->pushButton->setFont(font);qDebug()<< this->fontsize << " " << new_fontsize;}
}

二、進階版大致思路

    1. 繼承現有控件,重寫每一個控件的resizeEvent函數,實現字體大小變換
      各個控件需保存自己的原始的大小和字體大小信息,根據原始信息和resize后的信息調整字體。 – 略繁瑣,通用性較差
    1. 寫一個函數或類 (推薦類,方便存儲原始數據),遍歷界面上的控件 (或將需要調整字體的控件提前加入類中的一個list中,在父窗體上resizeEvent函數中遍歷list,調整其中控件字體大小即可)。-- 通用性強,較難實現

已經有大佬寫了工具:QT界面自適應:https://blog.csdn.net/qq_45280097/article/details/134738567

三、參考鏈接

Qt 控件自適應字體大小:https://blog.csdn.net/lxj362343/article/details/108245226
Qt學習之路——字體跟隨控件自適應(筆記):https://blog.csdn.net/qq_39020917/article/details/131911691
Qt Windows高清DPI自適應分辨率縮放,比較完美的解決方案:https://blog.csdn.net/startl/article/details/105862817

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

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

相關文章

Spring MVC+mybatis 項目入門:旅游網(三)用戶注冊——控制反轉以及Hibernate Validator數據驗證

個人博客&#xff1a;Spring MVCmybatis 項目入門:旅游網&#xff08;三&#xff09;用戶注冊 | iwtss blog 先看這個&#xff01; 這是18年的文章&#xff0c;回收站里恢復的&#xff0c;現階段看基本是沒有參考意義的&#xff0c;技術老舊脫離時代&#xff08;2024年辣鐵鐵&…

澳大利亞.德國-門戶媒體投放通稿:需要注意什么地方

概述 在現代社會&#xff0c;新聞媒體的投放成為企業和組織宣傳推廣的重要手段之一。澳大利亞和德國作為全球重要的經濟和科技中心&#xff0c;其新聞媒體也備受關注。本文將介紹澳大利亞和德國的一些主要新聞媒體&#xff0c;并討論發表新聞稿時需要注意的地方。 澳大利亞媒…

streamlit 學習

表情網站 https://getemoji.com/ 官網&#xff1a; https://streamlit.io/ 文檔 https://docs.streamlit.io/develop/api-reference/chat/st.chat_message 安裝&#xff1a; pip install streamlit啟動 以下的python 文件指寫streamlit 程序的腳步。 1、先切換目錄到Pyth…

VMware虛擬機-設置系統網絡IP、快照、克隆

1.設置網絡IP 1.點擊右上角開關按鈕-》有線 已連接-》有線設置 2.手動修改ip 3.重啟或者把開關重新關閉開啟 2.快照設置 快照介紹&#xff1a; 通過快照可快速保存虛擬機當前的狀態&#xff0c;后續可以使用虛擬機還原到某個快照的狀態。 1.添加快照(需要先關閉虛擬機) 2.在…

[JAVASE] 類和對象(六) -- 接口(續篇)

目錄 一. Comparable接口 與 compareTo方法 1.1 Comparable接口 1.2 compareTo方法的重寫 1.2.1 根據年齡進行比較 1.2.2 根據姓名進行比較 1.4 compareTo 方法 的使用 1.3 compareTo方法的缺點(重點) 二. Comparator接口 與 compare方法 2.1 Comparator接口 2.2 compare 方法…

藍橋杯算法心得——李白打酒(加強版)

大家好&#xff0c;我是晴天學長&#xff0c;記憶化搜索&#xff0c;找到技巧非常重要&#xff0c;需要的小伙伴可以關注支持一下哦&#xff01;后續會繼續更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 2) .算法思路 1.memo三維表示記錄的結果 3&#xff09;.算法步驟 1…

slint esp32 tokio

源碼&#xff1a;https://github.com/xiaguangbo/slint_esp32_tokio cpu 是 esp32c2&#xff0c;屏幕是 ili9341&#xff0c;觸摸是 xpt2046&#xff0c;使用 spi 半雙工 不使用DMA&#xff08;esp-rs還沒支持&#xff09;&#xff0c;SPI 40M&#xff0c;240*320全屏刷新為1.5…

python文件IO之pickle 模塊讀寫對象數據

可以向一個文件中寫入字符串&#xff0c;讀取后也是讀取字符串形式&#xff0c;但是不能直接向文件中寫入像列表這樣的對象&#xff0c;需要 pickle 等模塊才行。 pickle 模塊介紹 pickle 模塊使用強大且有效的算法來進行序列化和反序列化。 序列化是指將一個對象轉換為能夠存…

前端面試手冊

前端面試手冊 崗位職責&#xff1a; 1&#xff0e;熟悉公司業務&#xff0c;能獨立高效高質地完成任務&#xff0c;負責功能的開發、測試、上線、維護&#xff1b; 2&#xff0e;負責推動、優化前端基礎架構、組件抽象&#xff0c;提升開發效率&#xff1b; 3&#xff0e;關…

四. TensorRT模型部署優化-模型部署的基礎知識

目錄 前言0. 簡介1. FLOPS2. TOPS3. HPC的排行&#xff0c;CPU/GPU比較4. FLOPs5. FLOPS是如何計算的6. CUDA Core vs Tensor Core總結參考 前言 自動駕駛之心推出的 《CUDA與TensorRT部署實戰課程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們…

記一次Spark cache table導致的數據問題以及思考

目前在做 Spark 升級(3.1.1升級到3.5.0)的時候&#xff0c;遇到了cache table導致的數據重復問題&#xff0c;這種情況一般來說是很少見的&#xff0c;因為一般很少用cache table語句。 當然該問題已經在Spark3.5.1已經解決了,可以查看對應的 SPARK-46995和SPARK-45592 從以上的…

最小二乘法-超詳細推導(轉換為矩陣乘法推導,矩陣求導推導)

最小二乘法就是讓均方誤差最小。 下面是損失函數轉換為矩陣方式的詳解 如何讓其最小&#xff0c;在導數為0的地方取極小值。 問&#xff1a;導數為0的地方可能去極大值&#xff0c;也可能是極小值&#xff0c;憑什么說導數為0就是極小值&#xff1f; 答&#xff1a;因為使用…

android ndc firewall 命令type 黑名單 白名單差異

可以看到以白名單方式使能防火墻&#xff0c;fw_FORWARD fw_INPUT fw_OUTPUT 的操作是DROP或REJEDCT。即默認所有應用不允許上網&#xff0c;需要 XXX:/ # ndc firewall enable whitelist 200 0 Firewall command succeeded XXX:/ # iptables -t filter -L Chain INPUT (polic…

酷黑簡潔大氣體育直播自適應模板賽事直播門戶網站源碼

源碼名稱&#xff1a;酷黑簡潔大氣體育直播自適應模板賽事直播門戶網站源碼 開發環境&#xff1a;帝國cms 7.5 安裝環境&#xff1a;phpmysql 支持PC與手機端同步生成html&#xff08;多端同步生成插件&#xff09; 帶軟件采集&#xff0c;可以掛著自動采集發布&#xff0c;無…

【HSQL001】HiveSQL內置函數手冊總結(更新中)

1.熟悉、梳理、總結下Hive SQL相關知識體系。 2.日常研發過程中使用較少&#xff0c;隨著時間的推移&#xff0c;很快就忘得一干二凈&#xff0c;所以梳理總結下&#xff0c;以備日常使用參考 3.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 文章目錄 1.函數清單 1.函數清…

某某某加固系統分析

某某某加固系統內核so dump和修復&#xff1a; 某某某加固系統采取了內外兩層native代碼模式&#xff0c;外層主要為了保護內層核心代碼&#xff0c;從分析來看外層模塊主要用來反調試&#xff0c;釋放內層模塊&#xff0c;維護內存模塊的某些運行環境達到防止分離內外模塊&am…

網上比較受認可的賺錢軟件有哪些?眾多兼職選擇中總有一個適合你

在這個互聯網高速發展的時代&#xff0c;網上賺錢似乎成了一種潮流。但是&#xff0c;你是否還在靠運氣尋找賺錢的機會&#xff1f;是否還在為找不到靠譜的兼職平臺而苦惱&#xff1f; 今天&#xff0c;就為你揭秘那些真正靠譜的網上賺錢平臺&#xff0c;讓你的賺錢之路不再迷…

等保測評的流程是怎樣的

等保測評概述 等保測評&#xff0c;即信息安全等級保護測評&#xff0c;是指對信息系統安全性能進行等級評估的過程。其目的是通過評估系統的安全性能&#xff0c;為系統提供一個安全等級&#xff0c;并規定相應的保護措施。等保測評的流程通常包括定級、備案、安全建設、等級測…

Python--List列表

list列表?? 1高級數據類型 Python中的數據類型可以分為&#xff1a;數字型&#xff08;基本數據類型&#xff09;和非數字型&#xff08;高級數據類型&#xff09; ●數字型包含&#xff1a;整型int、浮點型float、布爾型bool、復數型complex ●非數字型包含&#xff1a;字符…

TypeScript-type注解對象類型

type注解對象類型 在TS中對于對象數據的類型注解&#xff0c;除了使用interface之外還可以使用類型別名來進行注解&#xff0c;作用類似 type Person {name: stringage: number }const p:Person {name: lily,age: 16 } type 交叉類型&模擬繼承 類型別名配合交叉類型…