如何只显示30行并隐藏QTableWidget的剩余行

时间:2011-09-15 13:40:01

标签: qt

我有一个包含10,000条记录的QTableWidget。我需要一次只显示30行并隐藏剩余的行。在拖动/单击垂直滚动条时,它应显示相应的行并隐藏其他行。

即,如果单击上部滚动按钮,则应显示另一个上部项目并隐藏一个下部项目,反之亦然。它也应该在滚动时发生。

有人可以帮我这么做吗?

4 个答案:

答案 0 :(得分:0)

不幸的是,Qt不会让你这么容易,但是有办法和方法。根据你如何填充你的小部件,我建议你设置它,这样你最初填充30行,然后需要捕获来自滚动按钮的信号被点击并告诉表小部件删除上/下项并添加下一个,这个方法有折扣,但它会比尝试维护大量隐藏行更容易。

答案 1 :(得分:0)

我不知道是否明确地显示/隐藏事物是你想去的方式。相反,看看Qt的模型和视图类。如果您使用的是数据库,请查看QSqlTableModel,它应该为您处理这些事情。否则,请查看Model-View programming文档,related examples,尤其是关于optimizing for performance的部分(尽管在模型中,10,000条记录对于大多数用途来说并不是那么多)

答案 2 :(得分:0)

我认为你可以捕捉上/下按钮的事件,就像Nicholas所说,为了跟踪滑块/滚动条你需要使用'setTracking(true)'然后处理信号'valueChanged(int)'或者'sliderMoved(INT)'。

谢谢, 普拉迪普

答案 3 :(得分:0)

有一种方法可以将表格滚动从像素更改为项目。在表的Designer属性编辑器中,在 QAbstractItemView 部分中,有一个 VerticalScrollMode 选项。这可以是 ScrollPerPixel 或您可能想要的, ScrollPerItem

这可能会改变信号从像素到项目的行为,这将使您的计算更容易。

我正在使用4.4.3。