在qt與資料庫結合程式設計的過程中,記錄一多,基本上都需要用到翻頁檢視記錄,翻頁有個好處就是可以減輕顯示資料的**的壓力,不需要一次性將資料庫表的記錄全部顯示,也基本上沒有誰在一頁上需要一次性顯示所有記錄,搜尋引擎搜尋出來的結果也基本上都是翻頁顯示的,那麼問題來了,有沒有一種通用的辦法可以只需要傳入表名和查詢條件自動翻頁呢,答案是肯定的,qt對資料庫操作的封裝也是相當完美的,顯示也是如此,為此特意封裝成了乙個類,直接用就行。
主要功能:
自動按照設定的每頁多少行資料分頁
只需要傳入表名/字段集合/每頁行數/翻頁指示按鈕/文字指示標籤
提供公共靜態方法繫結字段資料到下拉框
建議條件欄位用數字型別的主鍵,速度極快
增加執行緒查詢符合條件的記錄總數,資料量巨大時候不會卡主介面
提供查詢結果返回訊號,包括當前頁/總頁數/總記錄數/查詢用時
可設定所有列或者某一列對齊樣式例如居中或者右對齊
可設定增加一列,列的位置,標題,寬度
可設定要查詢的字段集合
void dbpage::binddata(const qstring &sql)
//設定列標題和列寬度
for (int i = 0; i < columncount; i++)
if (labpagecurrent != 0)
if (labpagecount != 0)
if (labresultcount != 0)
if (labresultcurrent != 0)
if (labinfo != 0)
//傳送結果訊號
emit receivepage(pagecurrent, pagecount, resultcount, resultcurrent);
}void dbpage::slot_receivecount(quint32 count, double msec)
resultcount = count;
int yushu = resultcount % resultcurrent;
//不存在餘數,說明是整行,例如300%5==0
if (yushu == 0) else
} else
//2014-10-9增加翻頁按鈕可用不可用處理,如果只有一頁資料,則翻頁按鈕不可用
if (pagecount <= 1) else
tempsql = qstring("select %1 from %2 %3 order by %4").arg(selectcolumn).arg(tablename).arg(wheresql).arg(ordersql);
sql = qstring("%1 limit %2,%3;").arg(tempsql).arg(startindex).arg(resultcurrent); //組織分頁sql語句
國內站點:
國際站點:
個人主頁:
知乎主頁:
Qt開源作品8 通用控制項移動
在做一些專案的過程中,有一種應用場景是需要拖動裝置在乙個容器中,自由拖動擺放到合適的位置,然後儲存對應裝置的座標位置資訊,在軟體啟動好以後自動載入配置好的座標位置資訊,將每個裝置移動到對應的位置,最好背景圖在來個3d鳥瞰圖,或者來點三維實景,搞得很炫。這就是這個控制項的來由,還有一種場景比如組態軟體...
Qt開源作品24 遮罩層窗體
在有些專案中,需要在彈框的窗體背後遮罩原有主窗體,使得突出顯示彈窗窗體,突然想到之前寫過乙個全域性截圖的東東,原理一致,拿來改改。只需要引入乙個標頭檔案和實現檔案,然後在主窗體中設定下需要遮罩的主窗體和可能彈窗窗體的類名即可,就是如此簡單。可以支援多個窗體列表。原理很簡單,先安裝事件過濾器,攔截qe...
Qt容器類之三 通用演算法
在標頭檔案中,qt提供了一些全域性的模板函式,這些函式是可以使用在容器上的十分常用的演算法。我們可以在任何提供了stl風格迭代器的容器類上用這些演算法,包括qlist qlinkedlist qvector qmap和qhash。如果在目標平台上可以使用stl,那麼可以使用stl的演算法來代替qt的...