如何在点击QAbstractTableModel单元格时获取对应列的表头文本?
通过列号获取QAbstractTableModel的表头文本
当然可以,你可以直接使用QAbstractTableModel提供的headerData()方法,通过列号获取对应列的表头文本。
修改你的setData函数,加入获取表头的逻辑即可:
bool TableModel::setData(const QModelIndex &index, const QVariant &val, int role) { if (role == Qt::EditRole) { auto cellText = index.data(Qt::DisplayRole).toString(); std::cout << "row number: " << index.row() << " col number: " << index.column() << std::endl; std::cout << "indexText: " << cellText.toStdString() << std::endl; // 获取当前列的表头文本 int column = index.column(); QString headerText = this->headerData(column, Qt::Horizontal, Qt::DisplayRole).toString(); std::cout << "column header: " << headerText.toStdString() << std::endl; } return QAbstractTableModel::setData(index, val, role); }
关键说明:
headerData()的第一个参数传入目标列号;- 第二个参数指定为
Qt::Horizontal,表示获取列方向的表头(行表头则传Qt::Vertical); - 第三个参数用
Qt::DisplayRole就能获取表头的显示文本,如需其他样式或数据可更换对应角色。
比如点击示例中的b2单元格(列号为1),这段代码会输出对应的表头文本Column B。
内容的提问来源于stack exchange,提问作者BadRobot
相关产品推荐
相关产品推荐

