日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

引言

Python/ target=_blank class=infotextkey>Python是一種面向對象的高級動態編程語言,相比于其它如C/C++語言,具有上手快、代碼少、開發效率高的特點,Qt是跨平臺的C++圖形用戶界面應用程序開發框架,是當前主流的GUI開發工具之一,其在Python下的綁定是PyQt庫。使用“Python+PyQt”架構編寫應用軟件,可以做到在兼顧軟件運行效率的前提下,大大節省時間成本,加快項目的開發進度。

在Qt界面庫中,Model/View即模型/視圖結構可將界面組件與數據進行分離,是處理數據與界面的一種較好的方法。其中,視圖(View)是顯示和編輯數據的界面組件,模型(Model)是視圖與原始數據的接口。由于數據源與顯示界面通過Model/View結構分離開來,因此可將一個數據模型在不同的視圖中顯示,也可在不修改數據模型的前提下,設計特殊的視圖組件。

在Qt中,提供了一些常用的視圖組件如QListView、QTreeView、QTableView等,也提供了多種預定義的數據模型,如QStringListModel、QFileSystemModel、QStandItemModel等。

其中,QStringListModel是一種比較簡單的用于處理字符串列表的數據模型,它可作為QListView視圖組件的數據模型,在界面上顯示和編輯字符串列表。下面給出一個在Python語言下使用PyQt界面庫,將QStingListModel數據模型結合QListView視圖組件進行數據編輯及顯示的例子。

示例說明

該例使用QStringListModel作為數據模型,QListView作為視圖組件,演示這種Model/View視圖結構編輯字符串列表的功能,示例運行界面如下圖所示:

Python+PyQt架構:Model/View結構之QStringListModel編程示例

 

在主界面上,窗口左側包括了對QStringListModel的一些操作按鈕及QListView視圖組件,右側QPlainTextEdit中可以顯示當前QStringListModel中的內容,以便查看其是否與界面上ListView視圖組件上顯示的內容一致。最下面一行使用Label控件顯示QListView視圖組件上當前選中項的行、列信息。

界面設計

界面部分使用設計師設計,關于設計師設計界面的步驟可查看以前的文章,使用設計師編寫界面程序入門示例。本例保存為“Main.ui”,完成后界面(左邊)及窗口中涉及到的所有界面對象元素的布局情況(右邊)如下圖所示:

Python+PyQt架構:Model/View結構之QStringListModel編程示例

 

主窗口實現代碼

主窗口類MainWnd主要實現代碼如下圖所示:

Python+PyQt架構:Model/View結構之QStringListModel編程示例

 

其主要代碼解釋如下:

(1)第21-27行,初始化函數。其中,使用QStringListModel類創建一個數據模型實例,使用setStringList函數將一個字符串列表的內容作為數據模型的初始數據內容,使用setModel函數完成數據模型與視圖組件的關聯,使用setEditTriggers函數設置視圖組件的條目是否可以編輯以及如何進入編輯狀態,本例設置為雙擊或選擇單擊列表項后就進入編輯狀態。最后進行了信號與槽函數的關聯。

(2)第40-44行,添加項槽函數,在列表的最后一行添加一行新內容“new item”。

(3)第46-50行,插入項槽函數,在列表當前行的前面行添加一行新內容“inserted item”。

(4)第52-54行,刪除當前項槽函數,使用removeRow函數刪除當前行所在的項。

(5)第56-57行,刪除列表所有項槽函數,使用removeRows函數刪除整個列表項。

(6)第59-60行,重新初始化列表內容。

(7)第62-63行,當單擊視圖組件時,其clicked()信號會傳遞一個QModelIndex類型的參數,利用該參數,在界面下方顯示當前列表項的模型索引的行和列信息。

(8)第65-66行,清空主界面右邊QPlainTextEdit的內容。

(9)第68-72行,通過數據模型的stringList函獲取字符串列表,并在QPlainTextEdit里逐行顯示。程序運行時,無論對ListView作了何種編輯和修改,當單擊“顯示數據模型列表”按鈕時,在這兒顯示的內容應該與ListView里總是完全相同的,即數據模型里面的數據與界面上顯示的內容始終是同步的。

完整測試代碼

程序完整測試代碼如下圖所示:

Python+PyQt架構:Model/View結構之QStringListModel編程示例

 

運行后就會出現本文開頭所示的軟件界面。

總結

本文給出了在Python+PyQt架構下,關于Model/View即模型/視圖結構,最簡單的一個QStingListModel數據模型與QListView視圖組件相結合進行數據編輯及顯示的例子。從這兒可以看出,在Model/View結構中,數據模型與視圖組件完全是分離的,可以直接操作數據模型以修改數據,同時,在視圖組件中作的修改也會自動保存到數據模型里。

分享到:
標簽:架構 Python PyQt
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定