Qt 控件發展歷程 + 目標(1)

文章目錄

  • 聲明
  • 簡述控件的發展歷程
  • 學習目標
  • QWidget屬性

簡介:這篇文章只是一個引子,介紹一點與控件相關的但不重要的內容(瀏覽瀏覽即可),這一章節最為重要的還是要把之后常用且重要的控件屬性和作用給學透,學清楚,學明白

聲明

  1. 圖形化界面的程序

    • 在實現圖形化界面的程序時,Qt 框架已經為我們提供了許多 “控件”。我們需要學習和了解這些控件,并學會如何使用它們。編程講究的是 “站在巨人的肩膀上”,而不是 “從頭發明輪子”。
  2. 控件的使用

    • 一個圖形化界面上的內容,不需要我們全都從零實現。Qt 中已經提供了很多內置的控件,比如按鈕、文本框、單選按鈕、復選按鈕、下拉框等。我們可以直接拿過來使用。
  3. 控件(Widget)

    • 定義 :控件(Widget)是界面上的各種元素和各種部分的統稱。
    • 別名 :也被稱為小組件或小部件,但 “控件” 這個詞聽起來更專業。
  4. Java 相關知識

    • 隔壁 Java 的圈子里特別講究一些概念。例如,在 JavaSE 中會學到 “包裝類”,以及 “自動裝箱” 和 “自動拆箱”。
    • 自動裝箱與拆箱 :這是將 int、double 等內置類型使用 class 進行封裝的一種機制。
    • 包裝類:隱式類型轉換。

通過利用 Qt 提供的控件,我們可以高效地構建圖形化界面,無需重復造輪子,提高開發效率。

簡述控件的發展歷程

  • 上古時期的GUI

    • 在那個年代開發GUI并沒有啥控件概念,那界面上顯示出來的東西基本上全部都是畫出來的。你可以將顯示器理解成一塊畫布,那顯示器顯示的內容就可以對應理解成:操作系統可以提供一些API接口讓你在這個畫布上隨便寫寫畫畫(比如畫點,畫線,畫圓,再填充上各自顏色等等)。

    • 在這個環境下,開發一個圖形化界面的程序就相當于設計一個界面,在這個界面上去畫矩形,插入文字等等。這種風格的開發已經非常古老了,基本上現在看不到了。
      在這里插入圖片描述

    • 比如當時的電子詞典所設計圖形化界面程序就是采用這種風格,當時是在這個LAVA平臺上開發的

      在這里插入圖片描述

  • 過渡時期的GUI

    • 后來控件這樣的概念就逐漸被引入,那早期的控件比較簡單,數量非常有限,那風格自然也比較簡樸。比如當時的HTML已經包含了許多標簽,不同的標簽就會有不同的效果(< img >圖片,< a >鏈接,< input > 輸入框等等)
      在這里插入圖片描述
  • 現代的GUI

    • 那隨著時代的發展,新的GUI開發體系也隨之越來越豐富,提供的控件數量/質量也隨之提升
      在這里插入圖片描述
    • 這里還是要說明的一點是:雖然Qt的控件也很多,但是從整體上來看,相比于更現代的控件體系,其顏值還是要稍遜一籌的,看起來還是很簡樸的。不過Qt它沒有從歷史洪流中褪去,正是因為Qt也在不斷的進化與更新,時刻趕追時代潮流。雖然Qt Designer中展示的控件都是默認的樣子,不過Qt也提供了一些優化手段,可以讓控件變得更加好看
    • 比如近幾年Qt提供了Qt Design Studio,它就是對標現代化的界面體系了。制造出來界面的美觀程度在業界也是獨一檔的存在,不過是要收費的,它好像也是存在社區版本的,可以去了解一下。其實開發圖形化界面程序,顏值絕對稱的上是一件非常重要的事情(具體還是要看應用場景)

學習目標

  1. 在 Qt 中使? QWidget 類表? “控件”,像按鈕,視圖,輸?框,滾動條等具體的控件類,都是繼承?QWidget。可以說,QWidget 中就包含了 Qt 整個控件體系中通?的部分。在 Qt Designer 中, 隨便拖?個控件過來,選中該控件即可在右下?看到 QWidget 中的屬性
  2. 在Qt Creator的右則可以看到QWidget的各自屬性,也可以在這里直接進行編輯,下面紅色框框的屬性的具體意思都可以通過Qt 的文檔來逐個進行了解,不過這些屬性不需要咱們每一個都了解得清清楚楚,只需要認識其中一些非常常用的,重要的屬性即可

在這里插入圖片描述

QWidget屬性

下面列出了QWidget的屬性和對應的作用,咱們接下來就是要去學習其中一些比較重要常用的屬性,并結合相應的代碼進行分析和闡述,下面的先了解一下即可

  1. enabled :設置控件是否可使用。true 表示可用,false 表示禁用。

  2. geometry :位置和尺寸。包含 x, y, width, height 四個部分。其中坐標是以父元素為參考進行設置的。

  3. windowTitle :設置 widget 標題。

  4. windowIcon :設置 widget 圖標。

  5. windowOpacity :設置 widget 透明度。

  6. cursor :鼠標懸停時顯示的圖標形狀。可以是普通箭頭、沙漏、十字等形狀。在 Qt Designer 界面中可以清楚看到可選項。

  7. font :字體相關屬性。涉及到字體家族、字體大小、粗體、斜體、下劃線等等樣式。

  8. toolTip :鼠標懸停在 widget 上會在狀態欄中顯示的提示信息。

  9. toolTipDuring :toolTip 顯示的持續時間。

  10. statusTip :Widget 狀態發生改變時顯示的提示信息(比如按鈕被按下等)。

  11. whatsThis :鼠標懸停并按下 alt + F1 時,顯示的幫助信息(顯示在一個彈出的窗口中)。

  12. styleSheet :允許使用 CSS 來設置 widget 中的樣式。Qt 中支持的樣式非常豐富,對于前端開發人員上手是非常友好的。

  13. focusPolicy :該 widget 如何獲取到焦點。
    * Qt::NoFocus :控件不參與焦點管理,即無法通過鍵盤或鼠標獲取焦點。
    * Qt::TabFocus :控件可以通過 Tab 鍵獲得焦點。
    * Qt::ClickFocus :控件可以通過鼠標點擊獲得焦點。
    * Qt::StrongFocus :控件可以通過鍵盤和鼠標獲得焦點。
    * Qt::WheelFocus :控件可以通過鼠標滾輪獲得焦點(在某些平臺或樣式中可能不可用)。

  14. contextMenuPolicy :上下文菜單的顯示策略。
    * Qt::DefaultContextMenu :默認的上下文菜單策略,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發上下文菜單。
    * Qt::NoContextMenu :禁用上下文菜單,即使用戶點擊鼠標右鍵也不會顯示菜單。
    * Qt::PreventContextMenu :防止控件顯示上下文菜單,即使用戶點擊鼠標右鍵也不會顯示菜單。
    * Qt::ActionsContextMenu :將上下文菜單替換為控件的 “動作” 菜單,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發這個菜單。
    * Qt::CustomContextMenu :使用自定義的上下文菜單,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發這個菜單。

  15. locale :設置語言和國家地區。

  16. acceptDrops :該部件是否接受拖放操作。如果設置為 true,那么該部件就可以接收來自其他部件的拖放操作。當一個部件被拖放到該部件上時,該部件會接收到相應的拖放事件(如 dropEvent)。如果設置為 false,那么該部件將不會接收任何拖放操作。

  17. minimumSize :控件的最小尺寸。包含最小寬度和最小高度。

  18. maximumSize :控件的最大尺寸。包含最大寬度和最大高度。

  19. sizePolicy :尺寸策略。設置控件在布局管理器中的縮放方式。

  20. windowModality :指定窗口是否具有 “模態” 行為。

  21. sizeIncrement :拖動窗口大小時的增量單位。

  22. baseSize :窗口的基礎大小。用來搭配 sizeIncrement 調整組件尺寸,以計算組件應該調整到的合適的值。

  23. palette :調色板。可以設置 widget 的顏色風格。

  24. mouseTracking :是否要跟蹤鼠標移動事件。如果設為 true,表示需要跟蹤,則鼠標劃過的時候該 widget 就能持續收到鼠標移動事件。如果設為 false,表示不需要跟蹤,則鼠標劃過的時候 widget 不會收到鼠標移動事件,只能收到鼠標按下或者釋放的事件。

  25. tabletTracking :是否跟蹤觸摸屏的移動事件。類似于 mouseTracking,是 Qt 5.9 中引入的新屬性。

  26. layoutDirection :布局方向。
    * Qt::LeftToRight :文本從左到右排列,也是默認值。
    * Qt::RightToLeft :文本從右到左排列。
    * Qt::GlobalAtomics :部件的布局方向由全局原子性決定。

  27. autoFillBackground :是否自動填充背景色。

  28. windowFilePath :能夠把 widget 和一個本地文件路徑關聯起來。PS:其實作用不大。

  29. accessibleName :設置 widget 的可訪問名稱。這個名稱可以被輔助技術(像屏幕閱讀器)獲取到。這個屬性用于實現無障礙程序的場景中(也就是給盲人寫的程序)。PS:其實盲人也是可以使用電腦和手機的,甚至盲人還能成為程序猿。參見鏈接

  30. accessibleDescription :設置 widget 的詳細描述。作用同 accessibleName。

  31. inputMethodHints :針對輸入框有效,用來提示用戶當前能輸入的合法數據的格式。比如只能輸入數字,只能輸入日期等。

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

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

相關文章

socc 19 echash論文部分解讀

前言&#xff1a;論文還是得吃透才行&#xff0c;不然很多細節有問題 q1 object和data chunck哪一個大 根據論文&#xff0c;一個 data chunk 通常比一個 object 大&#xff0c;因為它是由多個 object 組合而成的 。 論文中提到&#xff0c;cross-coding 會將多個 object 組合…

w~自動駕駛~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12371169 #世界模型和DriveGPT這類大模型到底能給自動駕駛帶來什么ne 以下分享大模型與自動駕駛結合的相關工作9篇論 1、ADAPT ADAPT: Action-aware Driving Caption Transformer&#xff08;ICRA2023&#xff09; A…

【paddle】常見的數學運算

根據提供的 PaddlePaddle 函數列表&#xff0c;我們可以將它們按照數學運算、邏輯運算、三角函數、特殊函數、統計函數、張量操作和其他操作等類型進行分類。以下是根據函數功能進行的分類&#xff1a; 取整運算 Rounding functions 代碼描述round(x)距離 x 最近的整數floor(…

繪制音頻信號的各種頻譜圖,包括Mel頻譜圖、STFT頻譜圖等。它不僅能夠繪制頻譜圖librosa.display.specshow

librosa.display.specshow 是一個非常方便的函數&#xff0c;用于繪制音頻信號的各種頻譜圖&#xff0c;包括Mel頻譜圖、STFT頻譜圖等。它不僅能夠繪制頻譜圖&#xff0c;還能自動設置軸標簽和刻度&#xff0c;使得生成的圖像更加直觀和易于理解。 ### 函數簽名 python libros…

DDR DFI 5.2 協議接口學習梳理筆記01

備注:本文新增對各種時鐘含義做了明確定義區分,避免大家產生誤解,這也是5.2版本新引入的。 1. 前言 截止2025年5月,DFI協議最新版本為 5.2,我們首先看一下過去幾代的演進: DFI全稱DDR PHY Interface,是一種接口協議,定義了 Controller 和 PHY 之間接口的信號、時序以…

windows篡改腳本提醒

? 功能簡介 該監控系統具備如下主要功能&#xff1a; &#x1f4c1; 目錄監控 實時監聽指定主目錄及其所有子目錄內文件的變動情況。 &#x1f512; 文件哈希校驗 對文件內容生成 SHA256 哈希&#xff0c;確保變更檢測基于內容而非時間戳。 &#x1f6ab; 排除機制 支…

文章記單詞 | 第102篇(六級)

一&#xff0c;單詞釋義 apologize /??p?l?d?a?z/ v. 道歉&#xff1b;認錯discharge /d?s?t?ɑ?rd?/ v./n. 排出&#xff1b;釋放&#xff1b;解雇&#xff1b; dischargequiver /?kw?v?r/ v./n. 顫抖&#xff1b;抖動&#xff1b;箭筒plantation /pln?te??…

【DCGMI專題1】---DCGMI 在 Ubuntu 22.04 上的深度安裝指南與原理分析(含架構圖解)

目錄 一、DCGMI 概述與應用場景 二、Ubuntu 22.04 系統準備 2.1 系統要求 2.2 環境清理(可選) 三、DCGMI 安裝步驟(詳細圖解) 3.1 安裝流程總覽 3.2 分步操作指南 3.2.1 系統更新與依賴安裝 3.2.2 添加 NVIDIA 官方倉庫 3.2.3 安裝數據中心驅動與 DCGM 3.2.4 服務…

主成分分析(PCA)法例題——給定協方差矩陣

已知樣本集合的協方差矩陣為 C x 1 10 [ 3 1 1 1 3 ? 1 1 ? 1 3 ] {\bm C}_x \frac{1}{10} \begin{bmatrix} 3 & 1 & 1 \\ 1 & 3 & -1 \\ 1 & -1 & 3 \end{bmatrix} Cx?101? ?311?13?1?1?13? ? 使用PCA方法將樣本向量降到二維 。 求解 計…

uni-app(4):js語法、css語法

1 js語法 uni-app的js API由標準ECMAScript的js API 和 uni 擴展 API 這兩部分組成。標準ECMAScript的js僅是最基礎的js。瀏覽器基于它擴展了window、document、navigator等對象。小程序也基于標準js擴展了各種wx.xx、my.xx、swan.xx的API。node也擴展了fs等模塊。uni-app基于E…

Idea 配合 devtools 依賴 實現熱部署

核心依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency> yaml配置 spring: #…

leetcode513.找樹左下角的值:遞歸深度優先搜索中的最左節點追蹤之道

一、題目本質與核心訴求解析 在二叉樹算法問題中&#xff0c;"找樹左下角的值"是一個典型的結合深度與位置判斷的問題。題目要求我們找到二叉樹中最深層最左邊的節點值&#xff0c;這里的"左下角"有兩個關鍵限定&#xff1a; 深度優先&#xff1a;必須是…

Python入門手冊:Python基礎語法

Python是一種簡潔、易讀且功能強大的編程語言&#xff0c;非常適合初學者入門。無論你是編程新手&#xff0c;還是有一定編程基礎但想學習Python的開發者&#xff0c;掌握Python的基礎語法都是邁向高效編程的第一步。本文將詳細介紹Python的基本語法&#xff0c;包括變量和數據…

postgresql 常用參數配置

#01 - Connection-Authentication 優化點&#xff1a; listen_addresses 0.0.0.0 建議&#xff1a;生產環境應限制為具體IP&#xff08;如 192.168.1.0/24,127.0.0.1&#xff09;&#xff0c;避免暴露到公網。 ssl off 建議&#xff1a;啟用SSL&#xff08;ssl on&#xf…

POI模板生成EXCEL 64000 style in a .xlsx Workbook

業務場景&#xff1a; 項目需要生成多個EXCEL表格&#xff0c;每個表格根據數據列表的大小動態增加Excel的行數&#xff0c;要保證新插入行的樣式與模板完全一致 考慮使用以下方法保證樣式的統一 cloneStyleFrom(templateStyle); 但是由于數據量比較大&#xff0c;拋出如下的…

HJ106 字符逆序【牛客網】

文章目錄 零、原題鏈接一、題目描述二、測試用例三、解題思路四、參考代碼 零、原題鏈接 HJ106 字符逆序 一、題目描述 二、測試用例 三、解題思路 基本思路&#xff1a; ??考慮到可能會有多個空格&#xff0c;使用使用 getline 函數直接讀取一行。 ??如果可以直接打印的…

CI/CD的演進之路

CI/CD的演進之路 一、CI/CD的成長演變 早期起源與初步實踐&#xff1a;CI/CD的概念可以追溯到軟件開發的早期階段&#xff0c;但真正開始受到關注是在敏捷開發方法興起之后。在傳統的瀑布模型開發模式下&#xff0c;軟件開發周期長、發布頻率低&#xff0c;更新往往需要數月甚…

制作一款打飛機游戲55:擴散

子彈模式 ?瘋狂的子彈地獄?&#xff1a; 嘿&#xff0c;伙計們&#xff0c;今天我們要創造一些令人印象深刻的子彈模式。這就是所謂的“子彈地獄”&#xff01; ?問題與挑戰?&#xff1a; 在之前的開發中&#xff0c;我們遇到了一些問題。特別是關于如何處理子彈的角度問題…

Vortex GPGPU的github流程跑通與功能模塊波形探索(三)

文章目錄 前言一、./build/ci下的文件結構二、基于驅動進行仿真過程牽扯的文件2.1 blackbox.sh文件2.2 demo文件2.3 額外牽扯到的ramulator2.3.1 ramulator簡單介紹2.3.2 ramulator使用方法2.3.3 ramulator的輸出2.3.4 ramulator的復現2.3.4.1 調試與驗證&#xff08;第 4.1 節…

公有云AWS基礎架構與核心服務:從概念到實踐

??「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 (初學者技術專欄) 一、基礎概念 定義:AWS(Amazon Web Services)是亞馬遜提供的云計算服務,包含計算、存儲、網絡、數據庫等核心能力,通過全球數據中心為用戶提供靈活…