1.由於是點擊HeaderView進行排序,所以初始代碼
//排序 //QTableView model->lgoods_model view->lgoods_view lgoods_head_view = lgoods_view->horizontalHeader(); lgoods_head_view->setSortIndicator(0,Qt::AscendingOrder); lgoods_head_view->setSortIndicatorShown(true); connect(lgoods_head_view,SIGNAL(sectionClicked(int)),this,SLOT(view_sort(int)));
2.view_sort槽函數
/* * 名稱:view_sort * 功能:QTableView排序 * 參數:int * 返回:void */ void LSell::view_sort(int column) { int i = lgoods_head_view->sortIndicatorOrder(); if(0 == i) lgoods_model->sort(column,Qt::AscendingOrder); else lgoods_model->sort(column,Qt::DescendingOrder); }
完成后遇到的一個問題是,排序時數字排序是亂序
那是因為我QTbaleView數據設置的是按照QString的方式存儲的,設置成數字存儲后即可,代碼如下:
//字符串方式 QString g_name = query.value(0).toString(); lgoods_model->setItem(row,0,new QStandardItem(g_name)); //數字方式 QVariant g_last = query.value(1); QStandardItem *item_last = new QStandardItem(); item_last->setData(g_last,Qt::EditRole); lgoods_model->setItem(row,1,item_last);