无法检索 QTableWidget 的选定单元格的 y 坐标

Unable to retrieve the y-coordinate of the selected cell of a QTableWidget

提问人:Martin Denion 提问时间:7/22/2023 更新时间:8/22/2023 访问量:20

问:

我正在我的Qt应用程序(Qt 4.8版本)中实现一个。QTableWidget

这个 QTableWidget 由 18 秒组成QTableWidgetItem

当用户想要更改当前选定的单元格时,它只需调用:

tblWdgList->setCurrentCell(newCell, 0, QItemSelectionModel::ClearAndSelect);

问题是我想在与当前所选单元格相同的 y 坐标处放置一个小箭头。所以我正在使用信号。currentCellChanged

connect(tblWdgList, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(onCurrentCellChanged(int,int,int,int)));

当发出此信号时,它会调用:currentCellChanged

void CAppWdgSettingsLanguage::onCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
{
    Q_UNUSED(currentColumn)
    Q_UNUSED(previousColumn)
    lblArrow->move(lblArrow->pos().x(), tblWdgList->y() + tblWdgList->rowViewportPosition(currentRow));
}

这个 QTableWidget 位于我的应用程序的专用页面中,因此它并不总是显示。 当我打开页面时,它显示 QTableWidget,它应该初始化箭头的位置。 问题在于,如果当前所选单元格的索引超过垂直滚动条处于向上位置时可以显示的单元格数,则在此初始化期间返回的值是错误的。rowViewportPosition()

这意味着,如果我在显示之前或显示之后调用该方法,则无论 的几何形状如何,都会返回 y 坐标,就好像没有滚动条一样。但是,如果我将调用延迟了大约 200 毫秒(可能延迟到最小延迟,只是为了测试目的),那么 rowViewportPosition() 方法将返回正确的值。setCurrentCellQTableWidgetrowViewportPosition()QTableWidgetonCurrentCellChanged

qt qt4 qtablewidget qtablewidgetitem

评论


答:

0赞 elcuco 8/22/2023 #1

获取所选索引列表时:https://het.as.utexas.edu/HET/Software/html/qabstractitemview.html#selectedIndexes

您以后应该能够查询以下行:https://het.as.utexas.edu/HET/Software/html/qmodelindex.html(应为“y”)