Qt中QTableView控件如何实际点击表头进行当前列表数字的排序,注意:是根据数字大小排序,而不是汉字排序,请给我完整代码
时间: 2023-11-26 14:03:34 浏览: 124
以下是一个使用QTableView控件实现数字排序的示例代码:
```cpp
#include <QApplication>
#include <QStandardItemModel>
#include <QTableView>
#include <QHeaderView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个QStandardItemModel数据模型
QStandardItemModel model(4, 2);
model.setHeaderData(0, Qt::Horizontal, "姓名");
model.setHeaderData(1, Qt::Horizontal, "年龄");
// 添加数据
model.setData(model.index(0, 0), "张三");
model.setData(model.index(0, 1), 25);
model.setData(model.index(1, 0), "李四");
model.setData(model.index(1, 1), 30);
model.setData(model.index(2, 0), "王五");
model.setData(model.index(2, 1), 20);
model.setData(model.index(3, 0), "赵六");
model.setData(model.index(3, 1), 28);
// 创建QTableView控件并设置数据模型
QTableView tableView;
tableView.setModel(&model);
// 设置表头可以点击排序
tableView.horizontalHeader()->setSortIndicator(1, Qt::AscendingOrder);
tableView.setSortingEnabled(true);
// 显示窗口
tableView.show();
return a.exec();
}
```
在上面的代码中,我们首先创建了一个QStandardItemModel数据模型,并添加了一些数据。然后,我们创建了一个QTableView控件,并将数据模型设置为它的数据源。接着,我们设置了表头可以点击排序,以及默认排序的列和排序方式。最后,我们将QTableView控件显示出来。
请注意,我们没有手动实现排序逻辑,而是使用了QTableView控件自带的排序功能。当用户点击表头时,控件会自动按照指定的列和排序方式进行排序。如果要实现自定义排序逻辑,可以通过继承QSortFilterProxyModel类来实现。
阅读全文