1. 程式人生 > >PyQt5高階介面控制元件之QLIstView(二)

PyQt5高階介面控制元件之QLIstView(二)

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()])

相關檔案及下載地址