如何按字段名称为 QTableWidget 编制索引

How can I index a QTableWidget by field name?

本文关键字:QTableWidget 索引 何按 字段      更新时间:2023-10-16

我正在修复别人的Qt代码,这涉及到向QTableWidget添加一些额外的列。当前代码按整数索引为列编制索引。我想更改此代码,以便它按标头名称进行索引。目前的代码看起来有点像这样:

// column 1 => Semantics
// column 2 => algorithm
// colunm 3 => ...
// ...
tableWidget->setItemDelegateForColumn(0, semanticsDelegate);
tableWidget->setItemDelegateForColumn(1, algorithmsDelegate);
tableWidget->setItemDelegateForColumn(2, specDelegate);

我想将其更改为以下内容:

tableWidget->setItemDelegateForColumn(foo("Semantics"), semanticsDelegate);
tableWidget->setItemDelegateForColumn(foo("Algorithm"), algorithmsDelegate);
tableWidget->setItemDelegateForColumn(foo("..."), specDelegate);

这在Qt中可能吗?(QTableWidget 列的标题为"语义"、"算法"等)还是我必须创建一个表字段枚举来处理这个问题?

项目委托按int编制索引,因此,如果要以这种方式继续,则必须提供一个函数来将列标题映射到唯一整数。如何实现该foo()功能取决于您 - 枚举和QList< QPair<QString,enum_item> >应该对您有好处 - 。如果您的应用程序将被翻译,请不要忘记使用Qt的i18n设施