最近在使用QTableWidget時,因為結果數量比較多而且又有單元格控件,為了改善效率要做分頁處理。在網上找了一番,最後在http://www.cppblog.com/biao/archive/2011/10/30/159350.html 基礎上修改而來,首先感謝原作者。
改後的版本:http://files.cnblogs.com/files/roadbike/PageNavigator.7z
新的效果如下圖(windows系統):
改動點:
點擊頁碼標簽後,若之前有手工輸入頁碼,先清除之;
解決頁碼標簽內存洩漏;
頁碼標簽padding增大為6,方便點擊(可能是系統的差別,看著原版截圖邊距也蠻大的,在我的win10就挨得很近);
上一頁、下一頁與頁碼之間增加分隔符,避免如點擊下一頁時誤點到頁碼(頁碼標簽長度變化時比較容易點錯);
setStyleSheet挪到構造函數中;
調整代碼格式與類命名、統一參數命名等使其符合我們項目的標准;
其他小改動不太記得了 O(∩_∩)O哈哈哈~
使用方法,引用原文,並把類名等更新了:
// 把分頁組件加入到當前窗口
pageNavigator = new PageNavigator();
layout()->addWidget(pageNavigator);
當總頁數改變時(如查詢數據庫操作得到總頁數),只需要調用pageWidget的兩個函數
void Widget::changeMaxPage() {
pageNavigator->setMaxPage(ui->lineEdit->text().toInt());
pageNavigator->setCurrentPage(1);
}
當pageNavigator上的頁碼被點擊後,會發射void currentPageChanged(int page)信號,然後主窗口裡再作出相應反應,如查詢分頁查詢數據庫