如何设置pyqt5的QTableView的currentIndex?

如何设置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行,如何实现?


回答:

把倒数两行去掉。不论有没有focus,currentindex就在那里,不会变的。

你currentindex变了不是因为focus变了,是因为你前面重新setmodel了。你应该分别修改df和tableview.model,不应该用新的df重设model。

如果有什么外部原因导致currentindex会变化,非要这样做,那在df布局不变的情况下,在函数一开始保存的应该是currentindex的row,然后重新setmodel之后,用新的tableview.model和row重新生成“原来的”index。

pyqt5中qmodelindex不只是简单的行列值,它是和具体model绑定的。

以上是 如何设置pyqt5的QTableView的currentIndex? 的全部内容, 来源链接: utcz.com/p/937962.html

回到顶部