需要将QTableWidget设置为可以被点击,然后用下面的connect将点击信号与排序槽函数进行连接就可以了,注意,槽函数sortByColumn(int)需要自己定义。
connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int )),this, SLOT(sortByColumn(int)));
ui->tableWidget->horizontalHeader():QTableWidget表头组件
sectionClicked(int ):点击表头信号
sortByColumn(int):点击表头对应的排序槽函数。
定义sortByColumn(int)槽函数:
QTableWidget组件有对应的排序函数void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder);参数 column是点击列表的列数,order 是表示当前排序方式为升序还是降序,AscendingOrder为升序,DescendingOrder为降序
如果想设置点击一下升序,再点击降序如此重复的话。我是用一个bool SortUporDown作为标志位,默认给true,点击一次,变换一次本身的值。代码如下:
void LogManagement::sortByColumn(int n)
{
if(SortUporDown)
{
ui->tableWidget->sortItems(n, Qt::AscendingOrder);
SortUporDown=false;
}
else
{
ui->tableWidget->sortItems(n, Qt::DescendingOrder);
SortUporDown=true;
}
}