pyqt讲解7:表格和树
表格和樹的作用就是在一個(gè)控件中有規(guī)律得呈現(xiàn)更多的數(shù)據(jù),因此 PyQt5 提供了表格結(jié)構(gòu)和樹形結(jié)構(gòu)的控件類。
一.表格
1、QTableView
QTableView 用于將數(shù)據(jù)(數(shù)組、列表)以表格的形式呈現(xiàn)在界面中;QTableView 類中可以使用自定義數(shù)據(jù)模型來顯示內(nèi)容,通過 setModel 綁定數(shù)據(jù)源。
QTableWidget 繼承自 QTableView,區(qū)別在于 QTableView 可以使用自定義數(shù)據(jù)模型來顯示內(nèi)容,而 QTableWidget 只能使用標(biāo)準(zhǔn)的數(shù)據(jù)模型,并且單元格數(shù)據(jù)是人通過 QTableWidgetItem 對(duì)象來實(shí)現(xiàn)的。
QTable 控件可以綁定一個(gè)模型數(shù)據(jù)來更新控件上的內(nèi)容,可用的模式如下表:
名稱 含義
QStringListModel :存儲(chǔ)一組字符串
QStandardItemModel :存儲(chǔ)任意層次結(jié)構(gòu)的數(shù)據(jù)
QDirModel :對(duì)文件系統(tǒng)進(jìn)行封裝
QSqlQueryModel ;對(duì) SQL 的查詢結(jié)果集進(jìn)行封裝
QSqlTableModel :對(duì) SQL 中的表格進(jìn)行封裝
QSqlRelationTableModel :對(duì)帶有 foreign key 的 SQL 表格進(jìn)行封裝
QSortFilterProxyModel :對(duì)模型中的數(shù)據(jù)進(jìn)行排序或過濾
刪除當(dāng)前選中的數(shù)據(jù),有下面兩種方法:
indexs = self.tableView.selectionModel().selection().indexes() if len(indexs)>0: index = indexs[0] self.model.removeRows(index.row(), 1) index = self.tableView.currentIndex() self.model.removeRow(index.row())2、QListView
QListView 類用于展示數(shù)據(jù),子類是 QListWidget。 QListView 是基于模型的。
QListWidget 是 QListView 的升級(jí)版,此類已經(jīng)建立了數(shù)據(jù)存儲(chǔ)模型(QListWidgetItem),直接調(diào)用 addItem() 函數(shù)添加條目。
QListView 常用方法如下表
| setModel() | 用來設(shè)置 View 所關(guān)聯(lián)的 Model,可以使用 Python 原生的 list 作為數(shù)據(jù)源 Model |
| selectedItem() | 選中 Model 中的條目 |
| isSelected() | 判斷 Model 中的條目是否被選中 |
常用信號(hào)
| clicked | 當(dāng)單擊某項(xiàng)時(shí),觸發(fā)該信號(hào) |
| doubleClicked | 當(dāng)雙擊某項(xiàng)時(shí),觸發(fā)該信號(hào) |
3、QListWidget
常用方法
| addItem() | 在列表中添加QListWidgetItem對(duì)象或字符串 |
| addItems() | 添加列表中的每個(gè)條目 |
| insertItem() | 在指定地索引處插入條目 |
| clear() | 刪除列表的內(nèi)容 |
| setCurrentItem() | 設(shè)置當(dāng)前所選的條目 |
| sortItems() | 按升序重新排列條目 |
常用信號(hào)
| currentItemChanged | 當(dāng)列表中的條目發(fā)生改變時(shí)發(fā)射此信號(hào) |
| itemClicked | 當(dāng)點(diǎn)擊列表中的條目時(shí)發(fā)射此信號(hào) |
4、QTableWidget
常用方法
表格編輯類型的枚舉常量:
單元格內(nèi)容對(duì)齊方式枚舉類型:
二.樹QTreeWidget
QTreeWidget常用方法
| setColumnWidth(int column,int width) | 將指定列的寬度設(shè)置為給定的值 |
| insertTopLevelItems() | 在視圖的頂層索引中引入項(xiàng)目的列表 |
| expandAll() | 展開所有節(jié)點(diǎn)的樹形節(jié)點(diǎn) |
| invisibleRootItem() | 返回樹形控件中不可見的根選項(xiàng)(Root Item) |
| selectionItems() | 返回所有選定的非隱藏項(xiàng)目的列表內(nèi) |
QTreeWidgetItem類中常用的方法
| addChild() | 將子項(xiàng)追加到子列表中 |
| setText() | 設(shè)置顯示的節(jié)點(diǎn)文本 |
| Text() | 返回顯示的節(jié)點(diǎn)文本 |
| setCheckState(column.state) | 設(shè)置指定列的選中狀態(tài): |
| - | Qt.Checked:節(jié)點(diǎn)選中 |
| - | Qt.Unchecked:節(jié)點(diǎn)沒有選中 |
| setIcon(column,icon) | 在指定的列中顯示圖標(biāo) |
節(jié)點(diǎn)綁定方法
child2 = QTreeWidgetItem(root)
括號(hào)里有root
優(yōu)化一:設(shè)置節(jié)點(diǎn)的狀態(tài)
這里添加了child1的選中狀態(tài)
child1.setCheckState(0,Qt.Checked)
優(yōu)化二:設(shè)置節(jié)點(diǎn)的背景顏色
這里設(shè)置了根節(jié)點(diǎn)的背景顏色
優(yōu)化3 :添加響應(yīng)事件
self.tree.clicked.connect( self.onTreeClicked ) def onTreeClicked(self, qmodelindex):item = self.tree.currentItem()print("key=%s ,value=%s" % (item.text(0), item.text(1)))
電氣專業(yè)的計(jì)算機(jī)萌新,寫博文不容易,如果你覺得本文對(duì)你有用,請(qǐng)點(diǎn)個(gè)贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的pyqt讲解7:表格和树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炒粉的家常做法?
- 下一篇: pyqt5讲解9:时间模块timer和网