日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

qt listview詳細(xì)用法 listview添加多列

QListView簡介QListView列表視圖可以用來以列表的形式來展示數(shù)據(jù) 。在Qt中使用Model-View結(jié)構(gòu)來處理數(shù)據(jù)與視圖之間的關(guān)系,Model負(fù)責(zé)數(shù)據(jù)的存取,View負(fù)責(zé)數(shù)據(jù)的展示, 二者之間數(shù)據(jù)的交互則是通過委托(delegate)來實(shí)現(xiàn) 。
QT提供了一些現(xiàn)成的models用于處理數(shù)據(jù)項(xiàng):

  • QStringListModel 用于存儲簡單的QString列表;
  • StandardItemModel 管理復(fù)雜的樹型結(jié)構(gòu)數(shù)據(jù)項(xiàng),每項(xiàng)都可以包含任意數(shù)據(jù);
  • QDirModel 提供本地文件系統(tǒng)中的文件與目錄信息;
  • QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用來訪問數(shù)據(jù)庫;
QListView是Model-View框架中的一個類,是Qt Model-View框架的組成部分,QListView實(shí)現(xiàn)了QAbstractItemView類定義的接口,以使其能夠顯示從QAbstractItemModel類派生的模型提供的數(shù)據(jù) 。
QListView常用方法:
  • setModel(): 用來設(shè)置View所關(guān)聯(lián)的Model,可以使用Python原生的list作為數(shù)據(jù)源Model;
  • selectedItem(): 選中Model的條目;
  • isSelected(): 判斷Model中的某條目是否被選中;
  • setViewMode(): 設(shè)置視圖模式 。(ListMode: 條目從上到下布局,小尺寸顯示,IconMode: 條目從左到右布局,大尺寸顯示)
QListView常用信號:
  • clicked: 單擊某項(xiàng)時,發(fā)射此信號;
  • doubleClicked: 雙擊擊某項(xiàng)時,發(fā)射此信號;
  • activated: 當(dāng)用戶激活index指定的項(xiàng)目時,發(fā)射此信號;
  • entered: 當(dāng)鼠標(biāo)光標(biāo)進(jìn)入index指定的項(xiàng)目時,發(fā)射此信號;
  • iconSizeChanged: 在視圖可見時設(shè)置此圖標(biāo)大小時,發(fā)射此信號;
  • indexesMoved: 在視圖中移動索引時,發(fā)射此信號;
  • pressed: 按下鼠標(biāo)按鈕時,發(fā)射此信號;
  • viewportEntered: 當(dāng)鼠標(biāo)光標(biāo)進(jìn)入視圖時,發(fā)射此信號 。
QListView類繼承關(guān)系:
qt listview詳細(xì)用法 listview添加多列


測試QListView使用QStandardItemModel作為QListView 所使用的模型,在QStandardItemModel中每個QStandardItem條目添加一個圖標(biāo)和文本 。完整代碼如下:
importsys,osfromPyQt5importQtCore,QtGui,QtWidgetsfromPyQt5.QtCoreimportQtfromPyQt5.QtGuiimportQIcon,QStandardItem,QStandardItemModelfromPyQt5.QtWidgetsimport(QApplication,QWidget,QListView,QLabel,QVBoxLayout)classDemoListView(QWidget):def__init__(self,parent=None):super(DemoListView,self).__init__(parent)#設(shè)置窗口標(biāo)題self.setWindowTitle('實(shí)戰(zhàn)PyQt5:QListViewDemo!')#設(shè)置窗口大小self.resize(480,360)self.initUi()definitUi(self):vLayout=QVBoxLayout(self)lv=QListView(self)slm=QStandardItemModel()self.sports=[{'img':'/images/basketball.png','title':'籃球'},{'img':'/images/football.png','title':'足球'},{'img':'/images/rugby-ball.png','title':'橄欖球'},{'img':'/images/valley-ball.png','title':'排球'}]forsportinself.sports:item=QStandardItem(QIcon(os.path.dirname(__file__)+sport['img']),sport['title'])slm.appendRow(item)lv.setModel(slm)lv.clicked.connect(self.onListViewClicked)self.label=QLabel(self)vLayout.addWidget(lv)vLayout.addWidget(self.label)self.setLayout(vLayout)#設(shè)置選中第一行l(wèi)v.setCurrentIndex(slm.index(0,0))self.label.setText('當(dāng)前選擇為:'+self.sports[0]['title'])defonListViewClicked(self,index):#顯示選中的x信息self.label.setText('當(dāng)前選擇為:'+self.sports[index.row()]['title'])if__name__=='__main__':app=QApplication(sys.argv)window=DemoListView()window.show()sys.exit(app.exec())運(yùn)行結(jié)果如下圖:
qt listview詳細(xì)用法 listview添加多列


測試QListView
本文知識點(diǎn)
  • 使用QStandardItemModel作為視圖的模型;
  • 使用QStandItem為QStandardItemModel添加條目;
  • 為QStandItem條目添加一個圖標(biāo)和文字信息 。
【qt listview詳細(xì)用法 listview添加多列】以上就是qt listview詳細(xì)用法(listview添加多列)的相關(guān)內(nèi)容了,更多精彩請關(guān)注我們??!

推薦閱讀