7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font

API說明
font()獲取當前widget的字體信息.返回QFont對象.
setFont(const QFont& font)設置當前widget的字體信息.
屬性說明
family字體家族.?如"楷體",“宋體”,"微軟雅?"等.
pointSize字體??
weight字體粗細.以數值?式表?粗細程度取值范圍為[0,99],數值越?,越粗.
bold是否加粗.設置為true,相當于weight為75.設置為false相當于weight為50.
italic是否傾斜
underline是否帶有下劃線
strikeOut是否帶有刪除線
代碼?例:在Qt Designer中設置字體屬性

1)在界?上創建?個label
![[Pasted image 20250419105315.png]]

2)在右側的屬性編輯區,設置該label的font相關屬性
在這?調整上述屬性,可以實時的看到?字的變化.
![[Pasted image 20250419105403.png]]

3)執?程序,觀察效果
![[Pasted image 20250419105811.png]]

通過屬性編輯這樣的方式,雖然能夠快速方便的修改文字相關的屬性,但是還不夠靈活如果程序運行過程中,需要修改文字相關的屬性~~就需要通過代碼來操作了.

代碼?例:在代碼中設置字體屬性
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("這是一段文本");//創建字體對象QFont font;font.setFamily("仿宋");font.setPixelSize(30);font.setBold(true);font.setItalic(true);font.setUnderline(true);font.setStrikeOut(true);//把font對象設置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}

![[Pasted image 20250419110416.png]]

toolTip

API說明
setToolTip設置toolTip.
?標懸停在該widget上時會有提?說明.
setToolTipDuring設置toolTip提?的時間.單位ms.
時間到后toolTip?動消失.

toolTip只是給??看的.在代碼中?般不需要獲取到toolTip.

代碼?例:設置按鈕的toolTip

1)在界?上拖放兩個按鈕. objectName 設置為 pushButton_yes 和 pushButton_no
![[Pasted image 20250419121219.png]]

2)編寫widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//設置這兩個按鈕的toolTipsui->pushButton_yes->setToolTip("這是一個yes按鈕");ui->pushButton_yes->setToolTipDuration(3000);ui->pushButton_no->setToolTip("這是一個no按鈕");ui->pushButton_no->setToolTipDuration(7000);
}Widget::~Widget()
{delete ui;
}

msec=>毫秒 sec =>秒
usec =>微秒
1s = 1000 ms 1ms = 1000 us
國際單位制 (1000來換算的)
3)運?程序,觀察效果
可以看到?標停到按鈕上之后,就能彈出提?.時間到后??消失.
![[Pasted image 20250419124814.png]]

focusPolicy

設置控件獲取到焦點的策略.?如某個控件能否??標選中或者能否通過tab鍵選中.

API說明
focusPolicy()獲取該widget的focusPolicy,返回Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)設置widget的focusPolicy.
Qt::FocusPolicy 是?個枚舉類型.取值如下
  • Qt::NoFocus :控件不會接收鍵盤焦點
  • Qt::TabFocus :控件可以通過Tab鍵接收焦點
  • Qt::ClickFocus :控件在?標點擊時接收焦點
  • Qt::StrongFocus :控件可以通過Tab鍵和?標點擊接收焦點(默認值)
  • Qt::WheelFocus : 類似于 Qt::StrongFocus ,同時控件也通過?標滾輪獲取到焦點(新增
    的選項,?般很少使?).
代碼?例:理解不同的focusPolicy

1)在界?上創建四個單?輸?框(Line Edit)
![[Pasted image 20250419131551.png]]

2)修改四個輸?框的 focusPolicy 屬性為 Qt::StrongFocus (默認取值,?般不?額外修改)
可以通過tab和鼠標點擊切換輸入框
3)修改第?個輸?框的 focusPolicy 為 Qt::NoFocus ,則第?個輸?框不會被tab/?標左鍵選中.
![[Pasted image 20250419132148.png]]

此時這個輸?框也就?法輸?內容了.
4)修改第?個輸?框 focusPolicy 為 Qt::TabFocus ,則只能通過tab選中,?法通過?標選中.
5)修改第?個輸?框 focusPolicy 為 Qt::ClickFocus ,則只能通過鼠標選中,?法通過tab選中.
![[Pasted image 20250419132506.png]]

styleSheet

通過CSS設置widget的樣式.
CSS(Cascading Style Sheets層疊樣式表)本?屬于??前端技術.主要就是?來描述界?的樣式.
所謂"樣式",包括不限于??,位置,顏?,間距,字體,背景,邊框等.
我們平時看到的豐富多彩的??,就都會?到?量的CSS.
Qt雖然是做GUI開發,但實際上和??前端有很多異曲同?之處.因此Qt也引?了對于CSS的?持.
CSS中可以設置的樣式屬性?常多.基于這些屬性Qt只能?持其中?部分,稱為QSS(Qt Style Sheet).具體的?持情況可以參考Qt?檔中"Qt Style Sheets Reference"章節.此處只是進??個簡單的演?.

代碼?例:設置?本樣式

1)在界?上創建label
![[Pasted image 20250419135254.png]]

2)編輯右側的styleSheet屬性,設置樣式
![[Pasted image 20250419135234.png]]

有三個點的按鈕,或者右鍵點擊label打開樣式表
![[Pasted image 20250419135413.png]]

![[Pasted image 20250419135556.png]]

font-family: '微軟雅黑';
font-size: 30px;
font-style: italic;
color: green;

此處的語法格式同CSS,使?鍵值對的?式設置樣式.其中鍵和值之間使? : 分割.鍵值對之間使?; 分割.
另外,Qt Designer只能對樣式的基本格式進?校驗,不能檢測出哪些樣式不被Qt?持.?如 textalign: center 這樣的?本居中操作,就?法?持.
編輯完成樣式之后,可以看到在Qt Designer中能夠實時預覽出效果.
![[Pasted image 20250419135818.png]]

3)運?程序,可以看到實際效果和預覽效果基本?致.
![[Pasted image 20250419140039.png]]

代碼?例:實現切換夜間模式.

1)在界?上創建?個多?輸?框(Text Edit)和兩個按鈕.
objectName 分別為 pushButton_light 和 pushButton_dark
![[Pasted image 20250419141718.png]]

2)編寫按鈕的slot函數.

void Widget::on_pushButton_light_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: white;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: white; color: black;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: black;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: black; color: white;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}

![[Pasted image 20250419142658.png]]

![[Pasted image 20250419142703.png]]

  • #333 是深?,但是沒那么?.
  • #fff 是純??.
  • #000 是純??.
    在線調色板,調色板工具—在線工具
    關于計算機中的顏?表?
    計算機中使?"像素"表?屏幕上的?個基本單位(也就是?個發亮的光點).
    每個光點都使?三個字節表?顏?,分別是R(red),G(green),B(blue)?個字節表?(取值范圍是0-255,或者0x00-0xFF).
    混合三種不同顏?的數值?例,就能搭配出千千萬萬的顏?出來.
  • rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表?純紅?.
  • rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表?純綠?.
  • rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表?純藍?.
  • rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表?純??.
  • rgb(0, 0, 0) 或者 #000000 或者 #000 表?純??.
    當然,上述規則只是針對?般的程序??是這么設定的.實際的顯?器,可能有8bit?深或者10bit?深等,實際情況會更加復雜
void Widget::on_pushButton_light_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: #f3f3f3;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: #fff; color: black;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: #333;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: #333; color: #fff;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}

![[Pasted image 20250419145223.png]]

![[Pasted image 20250419145229.png]]

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

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

相關文章

通過面向目標的獎勵彌合人與機器人的靈活性差距

24年10月來自紐約大學的論文“Bridging the Human to Robot Dexterity Gap through Object-Oriented Rewards”。 直接通過人類視頻訓練機器人是機器人技術和計算機視覺領域的一個新興領域。盡管雙指機械手在雙指夾持器方面取得了顯著進展&#xff0c;但以這種方式讓多指機械手…

C++入門篇(下)

目錄 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用場景 1.4.1 引用做參數 1.4.2 引用做返回值 1.5 引用和指針的區別 2、內聯函數 2.1 概念 2.2 特性 3、auto關鍵字 4、基于范圍的for循環 5、指針空值nullptr 5.1 C98 中的指針空值處理 5.2 C11 …

Multi-Query Attention (MQA) PyTorch 實現

和多頭注意力機制的唯一區別&#xff1a;K、V在不同的head之間實現了復用&#xff0c;而對于不同的頭&#xff0c;Q依然不同。 因此這里的代碼和標準多頭注意力的實現也是幾乎完全一樣&#xff1a; import torch import torch.nn as nn import torch.nn.functional as Fclass…

visual studio無法跳轉到函數定義、變量定義、跳轉函數位置不準問題解決

參考&#xff1a;https://blog.csdn.net/snakehacker/article/details/135438353 程序有時會出現大部分函數都不能準確的從頭文件中正確定位到函數定位,這是因為數據庫錯亂造成的,可以通過重構數據庫來解決,操作方法如下&#xff1a; 菜單欄&#xff1a;工具——選項 文本編輯…

Java優雅實現判空方法

在 Java 開發中&#xff0c;頻繁的 if (obj ! null) 判空代碼會導致代碼冗余、可讀性差&#xff0c;且容易遺漏判空導致 NullPointerException。以下從 語言特性、設計模式、工具類 和 編碼規范 四個維度&#xff0c;結合實際案例&#xff0c;詳解如何優雅處理空值問題。 一、…

京東百億補貼殺入外賣市場:一場關乎即時零售未來的攻防戰

當美團和餓了么在外賣市場雙雄爭霸十余年之際&#xff0c;京東突然以"百億補貼免傭金"的組合拳高調入場。這場看似跨界的外賣大戰&#xff0c;實則是互聯網巨頭對萬億級即時零售市場的生死爭奪。 外賣只是表象&#xff0c;即時零售才是終極戰場 京東黑板報4月10日官…

UNION和UNION ALL的主要區別

UNION和UNION ALL的主要區別在于處理重復數據和排序的方式。 UNION和UNION ALL都是SQL語言中用于合并兩個或多個SELECT語句結果集的關鍵字。它們的主要區別如下&#xff1a; 1、對重復結果的處理&#xff1a;UNION在進行表鏈接后會篩選掉重復的記錄&#xff0c;而UNION ALL不會…

七段碼 路徑壓縮 并查集 dfs

12.七段碼 - 藍橋云課 將七個二極管映射為 1-7 開一個二維矩陣 為 相鄰的邊連上線 edge[1][2] edge[1][6] 1;edge[2][1] edge[2][3] edge[2][7] 1;edge[3][2] edge[3][4] edge[3][7] 1;edge[4][3] edge[4][5] 1;edge[5][4] edge[5][6] edge[5][7] 1;edge[6][1…

科技如何改變世界?

技術是我們日常生活中不可或缺的一部分&#xff0c;以至于我們常常忘記了它的重要性。如果你正在科技領域工作&#xff0c;或者希望進入該領域&#xff0c;你可能是眾多有使命感的人之一&#xff0c;希望知道自己的日常工作能為社會或地球的長遠利益做出貢獻。 別再四處尋找了…

抽象的https原理簡介

前言 小明和小美是一對好朋友&#xff0c;他們分隔兩地&#xff0c;平時經常寫信溝通&#xff0c;但是偶然被小明發現他回給小美的信好像被人拆開看過&#xff0c;甚至偷偷被篡改過。 對稱加密算法 開頭的通信過程比較像HTTP服務器與客戶端的通信過程&#xff0c;全明文傳輸…

高級java每日一道面試題-2025年4月13日-微服務篇[Nacos篇]-Nacos如何處理網絡分區情況下的服務可用性問題?

如果有遺漏,評論區告訴我進行補充 面試官: Nacos如何處理網絡分區情況下的服務可用性問題&#xff1f; 我回答: 在討論 Nacos 如何處理網絡分區情況下的服務可用性問題時&#xff0c;我們需要深入理解 CAP 理論以及 Nacos 在這方面的設計選擇。Nacos 允許用戶根據具體的應用…

python解壓文件 zip tar.gz tar.xz

以下代碼為解壓zip包 tar包文件 zip_path&#xff1a;文件絕對路徑 output_folder&#xff1a;文件解壓后存放的文件夾路徑 def extract_file(zip_path, output_folder):# 支持解壓zip tar tar.gz tar.xz .tar.bz2# 確保輸出文件夾存在os.makedirs(output_folder, exist_okT…

網絡基礎(協議,地址,OSI模型、Socket編程......)

目錄 一、計算機網絡發展 二、協議 1.認識協議 2.OSI七層模型 3.TCP/IP 五層(或四層)模型 4.協議本質 三、網絡傳輸流程 1.MAC地址 2.協議棧 3.IP地址 IP地址 vs MAC地址 1. 核心區別 2. 具體通信過程類比 3. 關鍵總結 為什么需要兩者&#xff1f; 4.協議棧圖解…

生成式AI對話中提示詞策略:明確問題、明確目標和提供背景信息是最有效的策略

生成式AI對話中提示詞策略:明確問題、明確目標和提供背景信息是最有效的策略 最有效的提示詞策略包括明確問題、明確目標和提供背景信息。普適性有效提示詞策略可分為三類:明確需求與精確指引型、清晰解釋與邏輯排序型、拆解任務與多樣化表達型。[局限]數據來源于中國用戶,…

AtCoder ABC402 ABCD

A - CBC 把大寫字母按順序連起來 B - Restaurant Queue 一眼隊列&#xff0c;stl模擬就行 C - Dislike Foods 顯然&#xff0c;每次克服暴力枚舉每個菜肴會超時。 然而題目中給了每個菜肴的配菜個數&#xff0c;不妨換過來統計每個配菜用在了哪些菜肴。每次克服時&#x…

Transformer 架構 - 解碼器 (Transformer Architecture - Decoder)

歡迎回到我們的 Transformer 系列教程!在上一篇中,我們詳細探討了 Transformer 的編碼器,它負責將輸入的源序列(比如源語言句子)轉換為一系列包含豐富上下文信息的向量表示。 現在,我們將把目光投向 Transformer 的另一半——解碼器 (Decoder)。解碼器負責接收編碼器的輸…

神經網絡與模型訓練過程筆記

1.專有名詞 ANN 人工神經網絡&#xff0c;一種受生物神經元啟發的監督學習算法。輸入數據通過網絡中的層級函數傳遞&#xff0c;激活特定神經元。函數復雜度越高&#xff0c;模型對數據的擬合能力越強&#xff0c;預測精度越高。 偏置項 其中x下表從1開始的是輸入變量&#xf…

【計算機網絡 | 第二篇】常見的通信協議(一)

HTTP和HTTPS有什么區別&#xff1f; 端口號&#xff1a;HTTP默認是80端口&#xff0c;HTTPS默認是443。 URL前綴&#xff1a;HTTPHTTP 的 URL 前綴是 http://&#xff0c;HTTPS 的 URL 前綴是 https://。 安全性和資源消耗&#xff1a;HTTP協議運行在TCP上&#xff0c;都是明…

【python實用小腳本系列】用 Python 自己手搓一個給視頻“靜音”的小腳本,批量處理,輕松高效制作“無聲電影”!

嘿&#xff0c;小伙伴們&#xff01;今天我來給大家介紹一個超實用的 Python 小工具——一個能給視頻“靜音”的“聲音消除器”&#xff01;是不是聽起來很酷&#xff1f;想象一下&#xff0c;你可以把任何有聲視頻變成無聲視頻&#xff0c;是不是很有趣&#xff1f;接下來&…

【gpt生成-總覽】怎樣才算開發了一門編程語言,需要通過什么測試

開發一門真正的編程語言需要經歷完整的設計、實現和驗證過程&#xff0c;并通過系統的測試體系驗證其完備性。以下是分階段開發標準及測試方法&#xff1a; 一、語言開發核心階段 1. 語言規范設計&#xff08;ISO/IEC 標準級別&#xff09; ??語法規范??&#xff1a;BNF/…