qtlistwidget 排序
时间: 2023-09-19 20:12:37 浏览: 93
具有排序功能的list control
4星 · 用户满意度95%
在Qt中,QListWidget控件有内置的升序和降序两种排序规则。如果想按照QListWidgetItem的名称进行字符串排序,可以使用以下代码:
```cpp
listwidget->sortItems(Qt::AscendingOrder); // 升序
listwidget->sortItems(Qt::DescendingOrder); // 降序
```
如果希望使用自定义的排序规则,需要重写QListWidgetItem类,并重载其"<"运算符。以下是一个示例:
```cpp
class listwidgetItem : public QListWidgetItem {
public:
bool operator<(const QListWidgetItem &other) const {
double a, b;
a = this->data(Qt::UserRole).toDouble();
b = other.data(Qt::UserRole).toDouble();
return a < b;
}
};
// 使用自定义排序规则
QListWidget* widget = new QListWidget;
widget->setViewMode(QListView::IconMode);widget->setStyleSheet("QListWidget::Item{color:black;}");
for (int i = 0; i < 10; i++) {
listwidgetItem* item = new listwidgetItem();
item->setText(QString::number(i));
item->setData(Qt::UserRole, 10 - i);
item->setSizeHint(QSize(190, 200));
widget->addItem(item);
}
widget->sortItems(); // 进行自定义排序
```
请注意,当使用自定义排序规则后,QListWidget会按照默认的名称排序规则进行排序。如果想使用自定义的排序规则,请确保重载了"<"运算符并在sortItems()函数之前进行了设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [QListWidget实现自定义排序](https://blog.csdn.net/weixin_46085162/article/details/123245283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [QListWidget 自定义排序](https://blog.csdn.net/qq_42444110/article/details/122357825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文