C++QTableView设置不允许排序
时间: 2024-10-17 12:15:02 浏览: 32
在Qt的C++中,如果你想要禁用`QTableView`的排序功能,你可以通过设置模型(`QAbstractTableModel`的实例)的相关属性来实现。你需要阻止模型提供排序的功能,这通常是在`sort()`信号的槽函数中完成的。
首先,在你的模型中,覆盖`flags(QModelIndex)`方法,返回不包含`Qt::ItemIsEditable | Qt::ItemIsSortable`标志,表示该行项不可排序:
```cpp
class MyModel : public QAbstractTableModel {
public:
//...
int flags(const QModelIndex &index) const override {
if (!index.isValid()) {
return Qt::NoItemFlags;
}
return super().flags(index) & ~(
Qt::ItemIsEditable |
Qt::ItemIsUserCheckable |
Qt::ItemIsDragEnabled |
Qt::ItemIsDropEnabled);
}
//...
};
```
然后,在`QTableView`的初始化或配置中,将模型的排序行为设为默认,如不接受排序请求:
```cpp
QTableView *tableView = new QTableView();
tableView->setModel(model);
tableView->setSortingEnabled(false);
```
这样,当你试图点击表头进行排序时,操作将被禁止。
阅读全文