按列进行排序后,如何从qtablewidget :: item(qt bug?)中获取正确的行
How to get the correct row from QTableWidget::item after sortting by column (Qt BUG ?)?
我在Qt C++
中做一些表格,今天我发现了sortEnabled(true)
后发现一些非常可疑的东西。我想按列对QTableWidget
进行排序,这就是为什么我将该属性设置为true
的原因。从逻辑上讲,我已经有了我想要的东西,但是我注意到,当我在row of a table
上double click
时,与其他行相对应的模态对话框正在打开。我放在该表QTableWidgetItem-s
中。
QTableWidgetItem* widgetItem = new QTableWidgetItem();
widgetItem->setData(Qt::UserRole, it->id);
在double click signal
上,我正在使用QTableWidget::item(int aRow, int aCol)
提取行项目,然后我获得自定义唯一ID(在我分配了唯一ID的每一行)。
重点是:单击列标题和排序后,我将获得排序前该位置的行的ID。我现在拥有的ID与其他行相对应,因为我已经按其他列进行了排序。
我如何摆脱这个问题?我做错什么了吗。否则我忘记了将某些属性设置为true/false?
我认为sort
仅影响表的视觉侧面,但不影响结构的方式...
我只想要适当的ID,别无其他。
这是表情况的一个简短示例:
排序之前:
===id=======category==
| 47 | b |
| 48 | a |
| 49 | c |
| 50 | d |
======================
双击b
项目(1,1)返回correct QTableWidget*
和ID = 47
现在,我要单击Cattegory标题进行排序
排序后:
===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================
双击a
时(1,1)返回the old one QTableWidget*
和ID = 47
再次!我想获得48不是47 ..
任何人可以帮我吗?
我不知道为什么它没有获得正确的物品,但您应该收听QTableWidget::itemDoubleClicked()
信号,该信号向您发送了实际物品,因此您不必四处走动即可获得它。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Clang bug?使用指针作为模板参数
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 按列进行排序后,如何从qtablewidget :: item(qt bug?)中获取正确的行
- 在Qt中重现一个bug:调试代码时出现分段错误