我在Qt C++
做了一些表格的東西,今天我在sortEnabled(true)
後發現了一些非常可疑的東西。我想按列排序QTableWidget
,這就是爲什麼我將該屬性設置爲true
。按照邏輯,我有我想要的,但我注意到,當我double click
在row of a table
對應於其他行的模式對話框正在打開。 我把這張表放在QTableWidgetItem-s
。如何在按列(Qt BUG?)排序後從QTableWidget :: item獲取正確的行?
QTableWidgetItem* widgetItem = new QTableWidgetItem();
widgetItem->setData(Qt::UserRole, it->id);
在double click signal
我與QTableWidget::item(int aRow, int aCol)
提取該行項目,然後我得到的定製唯一的ID(每行我分配唯一的ID)。
重點是:在點擊列標題和排序後,我得到排序前該位置上的行的ID。現在我得到的ID對應於其他行,因爲我已經按其他列排序。
我如何擺脫這個問題?我做錯什麼了嗎。或者我忘記將某些屬性設置爲真/假?
我在想,sort
影響只是表的視覺方面,而不是結構性的方式...
我只想正確的ID,沒有別的。
這裏的表的情況很短的例子:
排序前:
===id=======category==
| 47 | b |
| 48 | a |
| 49 | c |
| 50 | d |
======================
當b
項目(1,1)雙擊返回correct QTableWidget*
和ID = 47
現在我'點擊菜單頭排序
排序:
===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================
當a
項目(1,1)雙擊返回the old one QTableWidget*
和ID = 47
AGAIN! 我想得到48沒有47 ..
任何人都可以幫我嗎?
我實際上在聽'void cellDoubleClicked(int row,int column)'。我會嘗試你的建議,當我看到結果時,我會標記答案。謝謝:)順便說一句..你有什麼想法爲什麼用我的方法(聽'cellDoubleClicked')不起作用?因爲通過對代碼邏輯的最小改變來完成任務將非常棒......如果沒有其他方法 - 我將使用您建議我的重寫方法。 –