首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除QTableView

如何清除QTableView
EN

Stack Overflow用户
提问于 2013-03-25 20:03:11
回答 3查看 6.2K关注 0票数 2

我有一台QTableView。我正在使用QtSql.QSqlQuery从数据库中查询数据。

代码语言:javascript
复制
SQL = 'SELECT * FROM table1'
Query = QtSql.QSqlQuery(database)
Query.prepare(SQL)
Query.exec_()

model = QtSql.QSqlTableModel()
model.setTable('Table')
model.setQuery(Query)

proxy = QtGui.QSortFilterProxyModel()
proxy.setSourceModel(model)

QTableView.setModel(proxy)

一切正常,查询结果显示在QTableView中。我的问题是,当我更改导致Query返回0条记录的SQL语句时,我需要清除QTableView中的数据和单元格

我尝试使用QTableView.clear(),它清除了单元格中的数据,留下了空行和空列。如何完全清除QTAbleView

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-25 20:07:35

我对清理数据的研究奏效了。

我使用了proxy.deleteLater()

希望遇到同样情况的人也能从中受益

票数 3
EN

Stack Overflow用户

发布于 2016-06-24 17:41:44

在c++中,有一个针对QAbstractItemView的重置功能。你可以说

yourTableView.reset();

票数 3
EN

Stack Overflow用户

发布于 2021-05-01 05:28:31

在这种情况下,由于QTableView的限制,我更喜欢使用一些变通方法

在我自己的个人程序中,我决定隐藏QTableView的行和列,使其看起来就像被设置为默认和空白一样。这样做的原因是,如果您删除小部件,您需要替换它,这也会重置对象的所有属性。从理论上讲,这可能会迫使您在每次需要时重新分配QTableView的所有属性,以便仅将其显示为空白或清除。与删除小部件不同,这个建议的选项只需两个简单的循环即可完成,当您刷新表格并希望再次显示值时,只需再次执行两个简单的循环即可完成工作。

有多种方法可以填充QTableView,但无论使用哪种方法,都只需要迭代表的行和列。下面是我使用的方法,它基于一个继承自QtCore.QAbstractTableModel的类,因此当我调用dataFrame时,它会返回QTableView数据的pandas数据帧。

如果需要隐藏表格,请执行以下操作:

代码语言:javascript
复制
for _row in range(len(yourQTableView.model().dataFrame.index)):
    yourQTableView.hideRow(_row)

for _col, col_name in enumerate(yourQTableView.model().dataFrame.columns):
    yourQTableView.hideColumn(_col)

如果您需要显示该表:

代码语言:javascript
复制
for _row in range(len(yourQTableView.model().dataFrame.index)):
    yourQTableView.showRow(_row)

for _col, col_name in enumerate(yourQTableView.model().dataFrame.columns):
    yourQTableView.showColumn(_col)

对我来说,这是最简单的方法,可以得到我想要的结果。我想不出为什么这种方法不会比完全删除小部件更受欢迎。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15614458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档