如何设置pyqt5的QTableView的currentIndex?

发布于 2022-09-12 23:56:32 字数 660 浏览 16 评论 0

我想用一个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

念﹏祤嫣 2022-09-19 23:56:32

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文