文章目錄
- 聲明
- 簡述控件的發展歷程
- 學習目標
- QWidget屬性
簡介:這篇文章只是一個引子,介紹一點與控件相關的但不重要的內容(瀏覽瀏覽即可),這一章節最為重要的還是要把之后
常用且重要的控件屬性和作用
給學透,學清楚,學明白
聲明
-
圖形化界面的程序
- 在實現圖形化界面的程序時,Qt 框架已經為我們提供了許多 “控件”。我們需要學習和了解這些控件,并學會如何使用它們。
編程講究的是 “站在巨人的肩膀上”,而不是 “從頭發明輪子”。
- 在實現圖形化界面的程序時,Qt 框架已經為我們提供了許多 “控件”。我們需要學習和了解這些控件,并學會如何使用它們。
-
控件的使用
- 一個圖形化界面上的內容,不需要我們全都從零實現。Qt 中已經提供了很多內置的控件,比如按鈕、文本框、單選按鈕、復選按鈕、下拉框等。我們可以直接拿過來使用。
-
控件(Widget)
- 定義 :控件(Widget)是界面上的各種元素和各種部分的統稱。
- 別名 :也被稱為小組件或小部件,但 “控件” 這個詞聽起來更專業。
-
Java 相關知識
- 隔壁 Java 的圈子里特別講究一些概念。例如,在 JavaSE 中會學到 “包裝類”,以及 “自動裝箱” 和 “自動拆箱”。
- 自動裝箱與拆箱 :這是將 int、double 等內置類型使用 class 進行封裝的一種機制。
- 包裝類:隱式類型轉換。
通過利用 Qt 提供的控件,我們可以高效地構建圖形化界面,無需重復造輪子,提高開發效率。
簡述控件的發展歷程
-
上古時期的GUI
-
在那個年代開發GUI并沒有啥控件概念,那界面上顯示出來的東西基本上全部都是畫出來的。你可以將顯示器理解成一塊
畫布
,那顯示器顯示的內容就可以對應理解成:操作系統可以提供一些API接口讓你在這個畫布上隨便寫寫畫畫(比如畫點,畫線,畫圓,再填充上各自顏色等等)。 -
在這個環境下,開發一個圖形化界面的程序就相當于設計一個界面,在這個界面上去畫矩形,插入文字等等。這種風格的開發已經非常古老了,基本上現在看不到了。
-
比如當時的電子詞典所設計圖形化界面程序就是采用這種風格,當時是在這個LAVA平臺上開發的
-
-
過渡時期的GUI
- 后來控件這樣的概念就逐漸被引入,那早期的控件比較簡單,數量非常有限,那風格自然也比較簡樸。比如當時的HTML已經包含了許多標簽,不同的標簽就會有不同的效果(< img >圖片,< a >鏈接,< input > 輸入框等等)
- 后來控件這樣的概念就逐漸被引入,那早期的控件比較簡單,數量非常有限,那風格自然也比較簡樸。比如當時的HTML已經包含了許多標簽,不同的標簽就會有不同的效果(< img >圖片,< a >鏈接,< input > 輸入框等等)
-
現代的GUI
- 那隨著時代的發展,新的GUI開發體系也隨之越來越豐富,提供的控件數量/質量也隨之提升
- 這里還是要說明的一點是:雖然Qt的控件也很多,但是從整體上來看,相比于更現代的控件體系,其顏值還是要稍遜一籌的,看起來還是很簡樸的。不過Qt它沒有從歷史洪流中褪去,正是因為Qt也在不斷的進化與更新,時刻趕追時代潮流。雖然Qt Designer中展示的控件都是默認的樣子,不過Qt也提供了一些優化手段,可以讓控件變得更加好看
- 比如近幾年Qt提供了
Qt Design Studio
,它就是對標現代化的界面體系了。制造出來界面的美觀程度在業界也是獨一檔的存在,不過是要收費的,它好像也是存在社區版本的,可以去了解一下。其實開發圖形化界面程序,顏值絕對稱的上是一件非常重要的事情(具體還是要看應用場景)
- 那隨著時代的發展,新的GUI開發體系也隨之越來越豐富,提供的控件數量/質量也隨之提升
學習目標
- 在 Qt 中使? QWidget 類表? “控件”,像按鈕,視圖,輸?框,滾動條等具體的控件類,都是繼承?QWidget。可以說,
QWidget 中就包含了 Qt 整個控件體系中通?的部分
。在 Qt Designer 中, 隨便拖?個控件過來,選中該控件即可在右下?看到 QWidget 中的屬性 - 在Qt Creator的右則可以看到QWidget的各自屬性,也可以在這里直接進行編輯,下面紅色框框的屬性的具體意思都可以通過Qt 的文檔來逐個進行了解,不過這些屬性不需要咱們每一個都了解得清清楚楚,只需要認識其中一些非常常用的,重要的屬性即可
QWidget屬性
下面列出了QWidget的屬性和對應的作用,咱們接下來就是要去學習其中一些比較重要常用的屬性,并結合相應的代碼進行分析和闡述,下面的先了解一下即可
-
enabled :設置控件是否可使用。
true
表示可用,false
表示禁用。 -
geometry :位置和尺寸。包含 x, y, width, height 四個部分。其中坐標是以父元素為參考進行設置的。
-
windowTitle :設置 widget 標題。
-
windowIcon :設置 widget 圖標。
-
windowOpacity :設置 widget 透明度。
-
cursor :鼠標懸停時顯示的圖標形狀。可以是普通箭頭、沙漏、十字等形狀。在 Qt Designer 界面中可以清楚看到可選項。
-
font :字體相關屬性。涉及到字體家族、字體大小、粗體、斜體、下劃線等等樣式。
-
toolTip :鼠標懸停在 widget 上會在狀態欄中顯示的提示信息。
-
toolTipDuring :toolTip 顯示的持續時間。
-
statusTip :Widget 狀態發生改變時顯示的提示信息(比如按鈕被按下等)。
-
whatsThis :鼠標懸停并按下 alt + F1 時,顯示的幫助信息(顯示在一個彈出的窗口中)。
-
styleSheet :允許使用 CSS 來設置 widget 中的樣式。Qt 中支持的樣式非常豐富,對于前端開發人員上手是非常友好的。
-
focusPolicy :該 widget 如何獲取到焦點。
*Qt::NoFocus
:控件不參與焦點管理,即無法通過鍵盤或鼠標獲取焦點。
*Qt::TabFocus
:控件可以通過 Tab 鍵獲得焦點。
*Qt::ClickFocus
:控件可以通過鼠標點擊獲得焦點。
*Qt::StrongFocus
:控件可以通過鍵盤和鼠標獲得焦點。
*Qt::WheelFocus
:控件可以通過鼠標滾輪獲得焦點(在某些平臺或樣式中可能不可用)。 -
contextMenuPolicy :上下文菜單的顯示策略。
*Qt::DefaultContextMenu
:默認的上下文菜單策略,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發上下文菜單。
*Qt::NoContextMenu
:禁用上下文菜單,即使用戶點擊鼠標右鍵也不會顯示菜單。
*Qt::PreventContextMenu
:防止控件顯示上下文菜單,即使用戶點擊鼠標右鍵也不會顯示菜單。
*Qt::ActionsContextMenu
:將上下文菜單替換為控件的 “動作” 菜單,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發這個菜單。
*Qt::CustomContextMenu
:使用自定義的上下文菜單,用戶可以通過鼠標右鍵或鍵盤快捷鍵觸發這個菜單。 -
locale :設置語言和國家地區。
-
acceptDrops :該部件是否接受拖放操作。如果設置為 true,那么該部件就可以接收來自其他部件的拖放操作。當一個部件被拖放到該部件上時,該部件會接收到相應的拖放事件(如 dropEvent)。如果設置為 false,那么該部件將不會接收任何拖放操作。
-
minimumSize :控件的最小尺寸。包含最小寬度和最小高度。
-
maximumSize :控件的最大尺寸。包含最大寬度和最大高度。
-
sizePolicy :尺寸策略。設置控件在布局管理器中的縮放方式。
-
windowModality :指定窗口是否具有 “模態” 行為。
-
sizeIncrement :拖動窗口大小時的增量單位。
-
baseSize :窗口的基礎大小。用來搭配 sizeIncrement 調整組件尺寸,以計算組件應該調整到的合適的值。
-
palette :調色板。可以設置 widget 的顏色風格。
-
mouseTracking :是否要跟蹤鼠標移動事件。如果設為 true,表示需要跟蹤,則鼠標劃過的時候該 widget 就能持續收到鼠標移動事件。如果設為 false,表示不需要跟蹤,則鼠標劃過的時候 widget 不會收到鼠標移動事件,只能收到鼠標按下或者釋放的事件。
-
tabletTracking :是否跟蹤觸摸屏的移動事件。類似于 mouseTracking,是 Qt 5.9 中引入的新屬性。
-
layoutDirection :布局方向。
*Qt::LeftToRight
:文本從左到右排列,也是默認值。
*Qt::RightToLeft
:文本從右到左排列。
*Qt::GlobalAtomics
:部件的布局方向由全局原子性決定。 -
autoFillBackground :是否自動填充背景色。
-
windowFilePath :能夠把 widget 和一個本地文件路徑關聯起來。PS:其實作用不大。
-
accessibleName :設置 widget 的可訪問名稱。這個名稱可以被輔助技術(像屏幕閱讀器)獲取到。這個屬性用于實現無障礙程序的場景中(也就是給盲人寫的程序)。PS:其實盲人也是可以使用電腦和手機的,甚至盲人還能成為程序猿。參見鏈接
-
accessibleDescription :設置 widget 的詳細描述。作用同 accessibleName。
-
inputMethodHints :針對輸入框有效,用來提示用戶當前能輸入的合法數據的格式。比如只能輸入數字,只能輸入日期等。