QTableWidget点击表头进行排序 实现

Posted jiangsion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTableWidget点击表头进行排序 实现相关的知识,希望对你有一定的参考价值。

一、 .cpp文件

#include "qtablewidgetsort.h"
#include <QDebug>

QTableWidgetSort::QTableWidgetSort(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    ui.tableWidget->setRowCount(10);
    ui.tableWidget->setColumnCount(5);

    QStringList hListheader;
    hListheader << QString::fromLocal8Bit("姓名");
    ui.tableWidget->setHorizontalHeaderLabels(hListheader);

    ui.tableWidget->setItem(0, 0, new QTableWidgetItem("a"));
    ui.tableWidget->setItem(1, 0, new QTableWidgetItem("d"));
    ui.tableWidget->setItem(2, 0, new QTableWidgetItem("c"));
    ui.tableWidget->setItem(3, 0, new QTableWidgetItem("b"));

    ui.tableWidget->setItem(4, 0, new QTableWidgetItem("19"));
    ui.tableWidget->setItem(5, 0, new QTableWidgetItem("15"));
    ui.tableWidget->setItem(6, 0, new QTableWidgetItem("11"));

    ui.tableWidget->setItem(7, 0, new QTableWidgetItem(QString::fromLocal8Bit("张三")));
    ui.tableWidget->setItem(8, 0, new QTableWidgetItem("qqq"));
    ui.tableWidget->setItem(9, 0, new QTableWidgetItem("zzzz"));

    //连接水平表头响应
    connect(ui.tableWidget->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sort(int)));
}

QTableWidgetSort::~QTableWidgetSort()
{

}

void QTableWidgetSort::sort(int col)
{
    ui.tableWidget->sortItems(col, Qt::AscendingOrder);
}

二、.h文件

#ifndef QTABLEWIDGETSORT_H
#define QTABLEWIDGETSORT_H

#include <QtWidgets/QMainWindow>
#include "ui_qtablewidgetsort.h"

class QTableWidgetSort : public QMainWindow
{
    Q_OBJECT

public:
    QTableWidgetSort(QWidget *parent = 0);
    ~QTableWidgetSort();

public slots:
    void sort(int col);

private:
    Ui::QTableWidgetSortClass ui;
};

#endif // QTABLEWIDGETSORT_H

三、运行程序

  

四、效果图

  

 

以上是关于QTableWidget点击表头进行排序 实现的主要内容,如果未能解决你的问题,请参考以下文章

点击表头,实现表格内容的规则排序

请教个QTableWidget表头设置问题

为自定义模型使用 QTableWidget 的排序功能

非常强大的table根据表头排序,点击表头名称,对其内容排序

如何用我自己的代码对 QTableWidget 进行排序?

如图所示,我想在Qt中可以自由的拖拽QTableWidget的表头宽度,请问怎么实现