2011-09-15 37 views
2

我有一個具有10,000條記錄的QTableWidget。我需要一次只顯示30行,並隱藏剩餘的行。在拖動/點擊垂直滾動條時,它應該顯示相應的行並隱藏其他行。如何僅顯示30行並隱藏QTableWidget的其餘行

即,如果點擊上滾動按鈕,它應該顯示一個更多的上層項目並隱藏一個下層項目,反之亦然。它也應該在滾動時發生。

任何人都可以幫助我做到這一點?

+1

我不清楚你想要做什麼。 – user763305

回答

0

我認爲你可以捕捉向上/向下按鈕的事件,正如Nicholas所說,跟蹤滑塊/滾動條需要使用'setTracking(true)',然後處理信號'valueChanged(int)'或'sliderMoved(int)'。

感謝, 普拉迪普

0

Qt不幸的是不會讓你這麼容易,但有辦法做到這一點。取決於你如何填充你的小部件,我建議設置它,以便你最初填充你的30行,然後你需要捕獲來自被點擊的滾動按鈕的信號,並告訴表部件刪除上/下部項目然後添加下一個,這個方法有點權衡,但它會比試圖維護一大堆隱藏行更容易。

+0

感謝您的反饋! 我也有同樣的想法。但如何拖動時跟蹤滾動條? – Shyam

+0

滾動條每次拖動時都會發出移動量爲的數量,您也可以連接到該信號。 –

0

我不知道是否明確地顯示/隱藏事情是你想要去的方式。相反,看看Qt的模型和視圖類。如果你正在使用數據庫,看看QSqlTableModel,它應該爲你處理這些事情。否則,請查看Model-View programming文檔,其related examples,尤其是關於的部分(儘管在模型中,對於大多數用途,10,000條記錄並不是那麼多)。

+0

我正在使用csv文件而不是數據庫 – Shyam

0

有改變表從像素滾動到項目的方式。在表格的Designer Property Editor中,在QAbstractItemView部分中,有一個VerticalScrollMode選擇。這可以是ScrollPerPixel或者你可能想要的,ScrollPerItem

這可能會改變信號從像素到物品的行爲,這會讓您的計算更容易。

我正在使用4.4.3。

相關問題