iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0

本篇目的:了解 QT 內常用元件的屬性編輯方法,以及在 wafer 分析工具內的應用方式

前言

在 Day 10 中我們介紹了 QT 物件的應用與屬性修改方式。今天我們會接續前一天的內容,說明其他的物件使用方式,並且說明各物件可使用之情境。

元件功能的介紹 # 2

QComboBox

作用:讓使用者挑選選項,另外也可以讓使用者輸入文字

可應用情境:讓使用者從固定的選項中選擇某項目,有時候也可以讓使用者輸入文字

常用靜態配置屬性:

  • editable - 是否可以編輯的屬性,需勾選才能讓使用者輸入文字

    https://ithelp.ithome.com.tw/upload/images/20260924/201823197Vi5AE3YOa.png

  • 在 QT designer 中編輯項目 - 在 QT designer 中加入與調整選項的方式如下

    https://i.meee.com.tw/P89etJ7.gif

常用動態配置屬性:

  • 取值 - 使用 combobox.currentText() 即可取得 QComboBox 的值,另外與 QLineEdit 相同,取得的值都會是字串

  • 在 Python 中編輯項目 - 加入或移除選項的方式的指令如下,通常應用於讀取設定檔後將選項寫入 QComboBox

    # 加入項目,只能放入字串
    # addItems 可以一次加入多個字串
    # addItem 只能加入一個字串
    combobox.addItems(['apple', 'banana'])
    combobox.addItem('cherry')
    
    # 移除項目時,要輸入選項對應之 index
    # 注意 Python 的 index 都是從 0 開始
    combobox.removeItem(2)
    

我通常讓 QComboBox 作為使用者選擇 SPEC 設定檔、計算項目的元件,原因是因為它要寫入或移除項目非常簡單;且多個選項集合在一元件內,可以讓畫面很簡潔。

QRadioButton

作用:做出一組可單選的按鈕組

可應用情境:有多個相關聯選項,但只能選一個項目的單選情境

常用靜態配置屬性:

  • checked - True 代表已被圈選

    https://ithelp.ithome.com.tw/upload/images/20260924/20182319vcdHBmbRSj.png

  • 按鍵群組 - QRadioButton 可以加入按鈕群組方便管理,設定方式為選擇多個 QRadioButton → 按右鍵 → 指定按鈕群組。設定後便會將指定元件加入 QButtonGroup

    https://i.meee.com.tw/UMRtPP7.gif

常用動態配置屬性:

  • 讀取單獨元件的選擇狀態 - 使用 radiobutton.isChecked() 便可得到該元件的選擇狀態,True 為選擇、 False 為沒有選擇

  • 讀取 QButtonGroup 的選擇狀態 - 使用 QButtonGroup 最大的好處是可以一次管理群組內的所有按鈕物件,可以避免使用一長串的 if-else 來判斷使用者選了什麼。
    若要讀取 QButtonGroup 的選取狀態可使用以下指令

    # 使用 checkedButton 會得到被選中的按鈕元件
    buttongroup.checkedButton()
    
    # 使用 checkedId 會得到被選中按鈕元件的 index
    buttongroup.checkedId()
    

QRadioButton 的特性是同一群組內之 QRadioButton 會互斥、只能選擇一個選項,因此很適合用於多選一之情境。

QCheckBox

作用:做出一個可選的按鈕

可應用情境:

  1. 需要讓使用者選擇,且可以對應到 Python 內 boolean 的情境 (例如要不要做卡控再計算產出)

  2. 需要多選的情境

常用靜態配置屬性:

  • checked - 若設為 True 代表已被圈選

  • 按鍵群組 - QCheckBox 一樣可以加入 QCheckBox,加入同一群組可以簡單的讀取多個 QCheckBox 的狀態。另外需注意 QCheckBox 的 exclusuve 需設成 False,否則群組內的 QCheckBox 會無法多選

    https://ithelp.ithome.com.tw/upload/images/20260924/20182319cLT3kRoHuj.png

常用動態配置屬性:

  • 讀取單個 QButtonGroup 的選取狀態:使用 checkBox.isChecked() ,若為 True 代表已被圈選;False 代表沒有被選

  • 讀取 QButtonGroup 的選擇狀態 - 指令與 QRadioButton 該段相同

QCheckBox 與 QRadioButton 最大的差異在於 QCheckBox 沒有互斥概念,因此支援多選。另外 QCheckBox 若做為要不要執行某功能的開關,常與其他 widget 連動並控制該 widget 的狀態 (例如是否可編輯等)。

https://ithelp.ithome.com.tw/upload/images/20260924/20182319LdUuZoVair.png

QTableWidget

作用:就是表格,可做為顯示元件,或是輸入的元件

常用靜態配置屬性:

  • columnCount/ rowCount: 控制行/ 列數

  • (vertical/ horizontal) HeaderVisible: 是否隱藏行列標題

    https://ithelp.ithome.com.tw/upload/images/20260924/20182319cIDYYGWUuM.png

  • 行列標題:設定方式如下

    https://i.meee.com.tw/7I8rYkS.gif

常用動態配置屬性:因為 QTableWidget 能使用的地方、修改的項目實在太多,後面 day 19 會有更詳細的說明

可應用情境:

  • 做為顯示元件,例如顯示計算結果、使用者匯入的資料預覽等

  • 作為設定元件,例如讓使用者輸入多項 SPEC 等

QTableWidget 的應用方式非常多,可以做為顯示元件、可以搭配鍵盤滑鼠事件讓使用者複製或貼上資料、也可以做為輸入元件,並同時支援 QComboBox 與 QSpinBox 輸入。

各元件的可應用方向

Day 10 與 Day 11 這2篇文章,主要目的是希望大家知道如何依照想要的目的、挑選適合的元件。放在 UI 內的元件可以分成兩種目的:讓使用者輸入資訊、顯示資訊給使用者。因此下圖針對這兩個需求繪製了一張路線圖,針對各種情境提供最常用的元件。

https://ithelp.ithome.com.tw/upload/images/20260924/20182319gmBnwApr8r.png

To be continued →

物件放進 UI 中了,但是放得有點亂。接下來我們會為 UI 加入排版


上一篇
Day 10: 工欲善其事 - QT designer 的常用物件導覽 # 1
下一篇
Day 12: 不以規矩,不能成方圓 - QT designer 內的 layout 物件與命名規範
系列文
用 Python 打造最順手的良率統計工具:半導體工程師的模組化開發之道 共 13 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言