如何设置pyqt5的QTableView的currentIndex?
我想用一个button按钮实现每点击一次使QTableView的当前currentIndex()行的第二列‘num’加一,我希望能能够连续点击增加,问题是点击一次后焦点就变了,我再用
self.tableViewNew.setFocus()设置时,index已经变了
我的源代码
def add1fun(self):
index=self.tableViewNew.currentIndex()
row=index.row()
if row<0:return
df=self.dfD
num=int(df['num'].values[row])+1
df.loc[row,'num']=num
self.dfD=df
print(row,num)
self.myModelD = pandasModelD(self.dfD)
self.tableViewNew.setModel(self.myModelD)
self.tableViewNew.update()
print(row,self.dfD)
self.tableViewNew.setFocus()
self.tableViewNew.setCurrentIndex(index)
假如光标在第3行,我希望通过连续点击按钮依次删去第3第4第5行,如何实现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
把倒数两行去掉。不论有没有focus,currentindex就在那里,不会变的。
你currentindex变了不是因为focus变了,是因为你前面重新setmodel了。你应该分别修改df和tableview.model,不应该用新的df重设model。
如果有什么外部原因导致currentindex会变化,非要这样做,那在df布局不变的情况下,在函数一开始保存的应该是currentindex的row,然后重新setmodel之后,用新的tableview.model和row重新生成“原来的”index。
pyqt5中qmodelindex不只是简单的行列值,它是和具体model绑定的。