在使用 QStandardItemModel
时,如果没有设置表头,Qt 会自动创建一个默认的表头。在你的代码中,由于没有调用 setHorizontalHeaderLabels()
方法来明确指定表头,所以 Qt 为你提供了一个默认的单个列名 “1”。
解决方法
如果希望自定义表头,可以在创建模型之后调用 setHorizontalHeaderLabels()
方法来设置你想要的标题。例如:
// 创建标准项模型
model = new QStandardItemModel();
model->setHorizontalHeaderLabels(QStringList() << "Category" << "Details");
// 添加根节点
QStandardItem *rootItem = model->invisibleRootItem();
// 添加子项
QStandardItem *item1 = new QStandardItem("Fruit");
rootItem->appendRow(item1);
// 在此处可以添加额外的数据列,如“Details”
item1->appendRow(new QStandardItem("Apple"));
item1->appendRow(new QStandardItem("Banana"));
ui->treeView->setModel(model);
总结
- 默认表头:当不设定任何标题时,
QStandardItemModel
会生成一个默认的标识(例如 “1”)。 - 自定义表头:通过调用
setHorizontalHeaderLabels()
可以提供更具描述性的列名。
这样就能去掉“1”这个默认表头,使用你自己定义的名称。如果你只需要一列,仍然可以将其设置为具有更合适名称的单列。
内容由零声教学AI助手提供,问题来源于学员提问