PyQt5 QListView 高亮显示某一条目的案例
- 作者: BIG笑工坊929
- 来源: 51数据库
- 2021-07-04
正在做的项目遇到的问题 , 在缩略图列表中选择某一图,同时关联到图片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的范围,


以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
推荐阅读
