QTableWidget实时添加数据,自动按照某列数据排序c++
时间: 2024-03-16 17:45:36 浏览: 83
可以通过以下步骤实现QTableWidget实时添加数据,自动按照某列数据排序:
1. 创建QTableWidget并设置表头。
2. 创建一个列表来保存添加的数据。
3. 通过QTableWidget的setItem方法将数据添加到表格中。
4. 通过QTableWidget的sortItems方法对指定列进行排序。
5. 在新数据添加到列表后,调用sortItems方法对表格进行排序。
以下是示例代码:
```c++
#include <QApplication>
#include <QTableWidget>
#include <QTableWidgetItem>
class TableWidget : public QTableWidget {
public:
TableWidget(QWidget* parent = nullptr) : QTableWidget(parent) {
// 设置表格列数和表头
setColumnCount(2);
setHorizontalHeaderLabels({"Name", "Score"});
// 设置表格排序方式
setSortingEnabled(true);
sortItems(1, Qt::DescendingOrder);
}
void addData(const QString& name, int score) {
// 将新数据添加到列表中
data_.append({name, score});
// 将新数据添加到表格中
int row = rowCount();
insertRow(row);
setItem(row, 0, new QTableWidgetItem(name));
setItem(row, 1, new QTableWidgetItem(QString::number(score)));
// 对表格按照第二列(分数)进行排序
sortItems(1, Qt::DescendingOrder);
}
private:
QVector<QPair<QString, int>> data_;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
TableWidget table;
table.show();
// 添加数据并自动排序
table.addData("Alice", 90);
table.addData("Bob", 80);
table.addData("Charlie", 95);
return app.exec();
}
```
在使用时,可以调用addData方法实现实时添加数据并按照分数自动排序。注意:由于C++中没有Python中的元组,这里使用了QPair来存储姓名和分数的对。
阅读全文