QT QComboBox得到鼠标光标事件是什么?
时间: 2023-08-09 18:12:27 浏览: 96
如果您想要获取`QComboBox`中鼠标光标的位置,可以通过`QComboBox`的`view()`函数获取下拉框的`QAbstractItemView`对象,然后再通过`QAbstractItemView`的`mapFromGlobal()`函数将全局坐标转换为视图坐标,最后再通过视图坐标获取光标所在的项的索引。
具体实现过程如下:
```cpp
void MyComboBox::mouseMoveEvent(QMouseEvent *event)
{
QPoint pos = event->globalPos(); // 获取鼠标位置
QAbstractItemView *view = this->view(); // 获取下拉框的视图对象
QModelIndex index = view->indexAt(view->mapFromGlobal(pos)); // 将全局坐标转换为视图坐标,并获取所在项的索引
if (index.isValid()) {
// 如果索引有效,则表示光标在某个项上
qDebug() << "Mouse cursor is over item:" << index.row();
} else {
// 如果索引无效,则表示光标在下拉框的非项区域
qDebug() << "Mouse cursor is over non-item area.";
}
}
```
在该函数中,我们首先通过`event->globalPos()`获取鼠标在屏幕上的全局坐标,然后通过`this->view()`获取下拉框的视图对象,接着通过`QAbstractItemView`的`mapFromGlobal()`函数将全局坐标转换为视图坐标,最后通过视图坐标获取光标所在的项的索引。需要注意的是,如果索引无效,则表示光标在下拉框的非项区域。
阅读全文