PyQt5高階介面控制元件之QLIstView(二)
阿新 • • 發佈:2019-01-03
QListView
前言
QlistView類用於展示資料,它的子類是QListWIdget。QListView是基於模型(Model)的,需要程式來建立模型,然後再儲存資料
QListWidget是一個升級版本的QListView,它已經建立了一個數據儲存模型(QListWidgetItem),直接呼叫addItem()函式,就可以新增條目(Item)
QListView類中常用的方法如表
方法 | 描述 |
---|---|
setModel() | 用來設定View所關聯的Model,可以使用Python原生的list作為資料來源Model |
selectedItem() | 選中Model的條目 |
isSelected() | 判斷Model中的某條目是否被選中 |
QListView的常用訊號
訊號 | 含義 |
---|---|
clicked | 當單擊某項時,訊號被髮射 |
doubleClicked | 當雙擊某項時,訊號被髮射 |
例項:QListView的使用
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QListView,QMessageBox
from PyQt5.QtCore import QStringListModel
class ListViewDemo(QWidget):
def __init__(self,parent=None):
super(ListViewDemo, self).__init__(parent)
#設定初始大小與標題
self.resize(300,270)
self.setWindowTitle('QListView 例子')
#垂直佈局
layout=QVBoxLayout()
#例項化列表檢視
listview=QListView()
#例項化列表模型,新增資料
slm=QStringListModel()
self.qList=['Item 1','Item 2','Item 3','Item 4']
#設定模型列表檢視,載入資料列表
slm.setStringList(self.qList)
#設定列表檢視的模型
listview.setModel(slm)
#單擊觸發自定義的槽函式
listview.clicked.connect(self.clicked)
#設定窗口布局,載入控制元件
layout.addWidget(listview)
self.setLayout(layout)
def clicked(self,qModelIndex):
#提示資訊彈窗,你選擇的資訊
QMessageBox.information(self,'ListWidget','你選擇了:'+self.qList[qModelIndex.row()])
if __name__ == '__main__':
app=QApplication(sys.argv)
win=ListViewDemo()
win.show()
sys.exit(app.exec_())
效果如圖
在這個例子中,當單擊QListView控制元件中的Model中的一項時會彈出訊息框(提示選中的是哪一項)
將QListView控制元件的clicked訊號與自定義物件的clicked()槽函式進行繫結
listview.clicked.connect(self.clicked)
def clicked(self,qModelIndex):
#提示資訊彈窗,你選擇的資訊
QMessageBox.information(self,'ListWidget','你選擇了:'+self.qList[qModelIndex.row()])