PyQt5 QListView 高亮顯示某一條目的案例
正在做的項目遇到的問題 , 在縮略圖列表中選擇某一圖,同時關聯到圖片list裡高亮顯示這個圖片名字。
一開始我直接用setCurrentIndex(int) 來設置
if msg == "CAM1_Label_1": self.showCamOnTopScreen(0) self.device_listView.setCurrentIndex(0)
結果報錯,提示
“setCurrentIndex(self, QModelIndex): argument 1 has unexpected type ‘int’”
後來發現此處不能直接用int , 而應該跟用初始化時的model.index() 來設置。
修改如下:
if msg == "CAM1_Label_1": self.showCamOnTopScreen(0) idx = self.devicelistModel.index(0) self.device_listView.setCurrentIndex(idx)
補充:pyqt5 Qlistiew指定index顯示
要求:
根據實驗步驟, 指定顯示當前的流程在哪個步驟。記錄一下
# QListView使用 from PyQt5.QtWidgets import QMessageBox, QListView, QStatusBar, QMenuBar, QMenu, QAction, QLineEdit, QStyle, \ QFormLayout, QVBoxLayout, QWidget, QApplication, QHBoxLayout, QPushButton, QMainWindow, QGridLayout, QLabel from PyQt5.QtGui import QIcon, QPixmap, QStandardItem, QStandardItemModel from PyQt5.QtCore import QStringListModel, QAbstractListModel, QModelIndex, QSize import sys class WindowClass(QMainWindow): def __init__(self, parent=None): super(WindowClass, self).__init__(parent) self.layout = QVBoxLayout() self.resize(200, 300) listModel = QStringListModel() listView = QListView() items = ["step0", "step1", "step2", "step3"] listModel.setStringList(items) listView.setModel(listModel) # 修改index的參數 ,即可指定當前的那個索引被選中 listViewindex = listModel.index(1) listView.setCurrentIndex(listViewindex) listView.clicked.connect(self.checkItem) self.layout.addWidget(listView) widget = QWidget() widget.setLayout(self.layout) self.setCentralWidget(widget) def checkItem(self, index): QMessageBox.information(self, "ListView", "選擇項是:%d" % (index.row())) if __name__ == "__main__": app = QApplication(sys.argv) win = WindowClass() win.show() sys.exit(app.exec_())
在listViewindex = listModel.index(3)
和在listViewindex = listModel.index(1)
的情況下 的情況下
要註意判斷輸入的index的范圍,
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- PyQt 如何創建自定義QWidget
- PyQt5 在QListWidget自定義Item的操作
- 關於pyqt5彈出提示框的詳細介紹
- python光學仿真PyQt5基礎框架教程
- Python PyQt5幹貨滿滿小項目輕松實現高效摳圖去背景