2013-10-03 81 views
0

我是修正其他人的Qt代碼的錯誤,這涉及到爲QTableWidget添加一些額外的列。當前代碼按其整數索引對列進行索引。我想改變這個代碼,以便通過標題名稱進行索引。此刻的代碼看起來有點像這樣:如何根據字段名稱對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列標題爲「語義」,「算法」等)或者我將不得不做一個表字段枚舉來處理這個?

+1

我會使用枚舉來命名列號:'enum {Semantics,Algorithm,Foo};'因爲我看不到任何理由將整數轉換爲字符串,反之亦然。 – vahancho

回答

1

項目代表由int編制索引,因此,如果您想以這種方式進行處理,則必須提供將列標題映射到唯一整數的函數。如何實現foo()函數取決於你 - 枚舉和QList< QPair<QString,enum_item> >應該對你有好處 - 。如果你的應用程序將被翻譯,不要忘記使用Qt's i18n facilities

相關問題