張貼於 2024
  • QStyle draw functions 範例

    Tuesday, July 23, 2024 於 Note

    這個範例將展示 畫出部分 Primitive Element ,了解他們個別長什麼樣子: PE_IndicatorArrowUp, PE_IndicatorItemViewItemCheck, PE_IndicatorCheckBox, PE_IndicatorRadioButton, PE_IndicatorArrowRight, PE_IndicatorProgressChunk, PE_FrameMenu。 如何使用 SubElement 與 subElementRect …

    閱讀全文

  • QStyle Overview

    Sunday, July 21, 2024 於 Note

    本篇是 Styles and Style Aware Widgets 的閱讀筆記 Qt 中,Style 指的是那些繼承 QStyle 的類別,QStyle 自身是抽象類。Qt 內建就有多個 styles 供選擇,某些 styles 只能在特定平台上使用。自定義的 styles 需透過 create() 創建、透過 setStyle() 設置。 Qt 內建的 widget 所需的繪圖環節,幾乎都由 style 執行。當所有的繪圖細節都封裝於 QStyle,就可以確保各元件之間繪製效果的一致性。例 …

    閱讀全文

  • Python 視覺化(3) matplotlib 進階繪圖

    Monday, July 15, 2024 於 Note

    數據視覺化在資料分析中是重要的環節,研究型分析跟發表型分析更有不同的表達方式。當拿到一筆資料,最頭痛的就是不知道該用何種圖來「觀察」它。 沒有繪圖靈感時的資源 以下幾個網站可以提供一點靈感: The Python Graph Gallery: 列出多種圖,和實際在海報上會看到的,很 fancy 的圖。透過現成的圖像得到靈感! from Data to Viz: 提供一個決策樹,使用者可以根據手上的資料分析,例如: 一維/二維/多維數據? 是否需要排序? 提供 Case Study,例如: 公寓價 …

    閱讀全文

  • Qt Souce Code 研讀-PE_FrameFocusRect, QFusionStyle 與 QPushButton

    Thursday, June 27, 2024 於 Note

    為了深入了解 Primitive Elements, Control Elements 這些 GUI element 實作上會怎麼使用。 我嘗試從一個實作下手 – 從 QStyle::PrimitiveElement 裡挑選了一個元素出來,在 custom widget 畫出這個效果。 這次選中 PE_FrameFocusRect 。 PE_FrameFocusRect 首先需要知道元素 PE_FrameFocusRect 是什麼。見下圖, …

    閱讀全文

  • Qt5 QPointer

    Friday, June 14, 2024 於 Note

    QPointer Qt 稱 QPointer 為 “guarded pointer”,指其行為有如 C raw pointer,唯一差在當 QPointer 指涉的對象被銷毀時,QPointer 會指向 nullptr,而原生的 C++ Pointer 會依然會指向原先的記憶體位置,而導致 dangling pointers。 它只是 C raw pointer 的進化版,並不是 smart pointer。Qt 另外有類似於 smart pointer 的存在,例如: …

    閱讀全文

  • PythonQt 讓 Python 的 QT Application 嵌入於 C++

    Saturday, June 01, 2024 於 Note

    Install PyQt5 sudo apt install qtbase5-dev sudo apt install libqt5widgets5 sudo apt install libqt5widgets5 sudo apt install libqt5gui5 sudo apt install qtbase5-private-dev # web engine related. sudo apt install qtwebengine5-dev qtwebengine5-dev-tools …

    閱讀全文

  • 使用 QAbstractItemModel 的時機

    Thursday, May 23, 2024 於 Note

    在這個範例中,資料是一個「出差核銷系統」,每一筆資料包含 出差人 Group (小組) Organization (大組) 起始日 結束日 已呈報 事後,我們需要根據每一筆資料計算些資訊,例如: 差旅長度。並且預期這個系統有延伸的可能,也續會增加「報帳金額」、「日均花費金額」…. QStandardItemModel 使用 QStandardItemModel,資料有如 2D excel 表格,優點是 Model 不需要實作。缺點是計算相關資料 (如差旅長度) 時,資料的關聯性差, …

    閱讀全文

  • QStandardItemModel 的優勢

    Thursday, May 23, 2024 於 Note

    QStandardItemModel 繼承 QAbstractItemModel ,如果想 implement 一個 Model,繼承 QStandardItemModel 會方便很多。 接下來會以一個簡單的例子說明,過於簡單的資料結構繼承 QAbstractItemModel 可能有哪些困擾。 Quick Example 假設手上的資料是 一個 2 rows x 3 columns Table,表格內容都是 True/False 使用 QAbstractItemModel …

    閱讀全文

  • Qt Model View Framework

    Thursday, May 23, 2024 於 Note

    Model-View-Controller MVC (model-view-controller) 是一種 design pattern,圖為 First Head Design Pattern 的範例。傳統的 MVC 架構如下 Model: 掌管業務邏輯,會是這個架構中唯一與 Database 交互的 component. View: 透過 Controller 得到 Model 的資料,呈現在 UI 上。 Controller: 轉換 User Input 成 Model 應該採取的動作, …

    閱讀全文

  • PyQt5 讓 QTableView 顯示置中的 CheckBox

    Saturday, May 18, 2024 於 Note

    讓 Checkbox 置中 TableVeiw 預設的 checkbox 沒辦法置中,解決方法有兩類 使用 Delegate 透過 setItemWidget 設 Layout,加 checkbox 元件 Example import sys from PyQt5.QtWidgets import QApplication, QTableView, QCheckBox, QVBoxLayout, QWidget, QHBoxLayout from PyQt5.QtCore import Qt, …

    閱讀全文