正在做的项目遇到的问题 , 在缩略图列表中选择某一图,同时关联到图片list里高亮显示这个图片名字。
一开始我直接用setcurrentindex(int) 来设置
1
2
3
|
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() 来设置。
修改如下:
1
2
3
4
|
if msg == "cam1_label_1" : self.showcamontopscreen(0) idx = self.devicelistmodel.index(0) self.device_listview.setcurrentindex(idx) |
补充:pyqt5 qlistiew指定index显示
要求:
根据实验步骤, 指定显示当前的流程在哪个步骤。记录一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 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的范围,
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_46185214/article/details/105918320