QTableWidget 添加右键菜单,最后一行不能处理
2015-04-29 17:09
489 查看
当把 QTableWidget放在别的 QWidget中以后,发现右键总是捕捉不到最下面的一个Item节点。
void DlgTask::on_customContextMenuRequested(QPoint pos)
{
if (m_nListCount > 0)
{
QTableWidgetItem* item = ui->taskTable->itemAt(ui->taskTable->viewport()->mapFromGlobal(QCursor::pos()));
if(item != NULL)
{
if (m_pPopMenu) //自定义的一个菜单对象
{
m_pPopMenu->exec(QCursor::pos());
}
}
}
}
为什么要用 viewport()->mapFromGlobal(QCursor::pos()
QT 助手中解释:
QWidget * QAbstractScrollArea::viewport () const
Returns the viewport widget.
Use the QScrollArea::widget() function to retrieve the contents of the viewport widget.
所以要用viewport()返回当前widget的坐标,
QPoint QWidget::mapFromGlobal ( const QPoint & pos ) const
Translates the global screen coordinate pos to widget coordinates.
再调用mapFromGlobal函数将屏幕坐标系转化为窗口坐标系,这样就拿到了鼠标点击处在tablewidget的坐标,然后就可以操作最后一行数据了。
所以本质原因就是坐标系的问题,即我们认为的(0,0)点坐标和实际的坐标其实是有差别的。将而鼠标点击返回的CursorPos是以屏幕坐标系为准的,因此实际中使用时要进行坐标系的转换。
void DlgTask::on_customContextMenuRequested(QPoint pos)
{
if (m_nListCount > 0)
{
QTableWidgetItem* item = ui->taskTable->itemAt(ui->taskTable->viewport()->mapFromGlobal(QCursor::pos()));
if(item != NULL)
{
if (m_pPopMenu) //自定义的一个菜单对象
{
m_pPopMenu->exec(QCursor::pos());
}
}
}
}
为什么要用 viewport()->mapFromGlobal(QCursor::pos()
QT 助手中解释:
QWidget * QAbstractScrollArea::viewport () const
Returns the viewport widget.
Use the QScrollArea::widget() function to retrieve the contents of the viewport widget.
所以要用viewport()返回当前widget的坐标,
QPoint QWidget::mapFromGlobal ( const QPoint & pos ) const
Translates the global screen coordinate pos to widget coordinates.
再调用mapFromGlobal函数将屏幕坐标系转化为窗口坐标系,这样就拿到了鼠标点击处在tablewidget的坐标,然后就可以操作最后一行数据了。
所以本质原因就是坐标系的问题,即我们认为的(0,0)点坐标和实际的坐标其实是有差别的。将而鼠标点击返回的CursorPos是以屏幕坐标系为准的,因此实际中使用时要进行坐标系的转换。
相关文章推荐
- pyqt4,QTableWidget 动态添加控件,添加图片,右键菜单选项
- QTableWidget右键菜单 QFileDialog
- 在GridView在添加最后一行的总计一列,怎么把6个零变成3个零,在后台处理
- QTableWidget具体解释(样式、右键菜单、表头塌陷、多选等)
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- QTreeWidget中添加右键菜单
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- Android TableFixHeaders 最后添加一行计算总和,上下不能滑动,左右可以滑动
- Qt-QTableWidget基本功能(右键菜单)
- 如何为treewidgetitem添加右键菜单
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- QTreeWidget 添加右键菜单
- Pyqt在QListWidget中添加右键菜单
- 添加右键菜单批处理
- MFC总结(5)---ListCtrl添加右键菜单
- 4.Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出。
- 将ultraedit添加到右键菜单