C++ 如何在Qt中检查当前光标形状

C++ 如何在Qt中检查当前光标形状,c++,qt,qt4,cursor,qwidget,C++,Qt,Qt4,Cursor,Qwidget,Fedora 17 x64上的Qt 4.8 在我的QWidget::mouseMoveEvent中,我试图检查光标当前是否设置为Qt::SizeVerCursor或Qt::SizeHorCursor,但由于编译错误,通过调用QWidget::cursor返回的QCursor无法与Qt::SizeVerCursor或Qt::SizeHorCursor进行比较。看起来这是因为Qt::SizeVerCursor和Qt::SizeHorCursor实际上都是Qt::CursorShape而不是QCurs

Fedora 17 x64上的Qt 4.8

在我的QWidget::mouseMoveEvent中,我试图检查光标当前是否设置为Qt::SizeVerCursor或Qt::SizeHorCursor,但由于编译错误,通过调用QWidget::cursor返回的QCursor无法与Qt::SizeVerCursor或Qt::SizeHorCursor进行比较。看起来这是因为Qt::SizeVerCursor和Qt::SizeHorCursor实际上都是Qt::CursorShape而不是QCursor

此代码无法编译:

void MyGraphicsView::mouseMoveEvent( QMouseEvent *event )
{
    if( ( cursor() == Qt::SizeHorCursor ) || ( cursor() == Qt::SizeVerCursor ) )
    {
        qDebugGreen() << "Cursor is a size cursor!";
    }

    QGraphicsView::mouseMoveEvent( event );
}
以下是编译错误:

错误:“QWidget::cursor const==Qt::CursorShape6u”中的“operator==”不匹配


如何检查当前光标是Qt::SizeVerCursor还是Qt::SizeHorCursor?

Imho cursor.shape应该可以工作。

Imho cursor.shape应该可以工作。

是的,可以编译,谢谢。每个小部件都有自己的光标吗?它一直返回为0,即使我可以看到光标是我正在检查的形状之一。我正在调用其光标的小部件不是将其设置为大小形状的小部件。这是预期的吗?在文档中,如果未设置游标,或者在调用Unset cursor后,将使用父级的游标。默认情况下,这将返回Qt::ArrowCursor,其值为0。尝试调用setCursor之前。在尝试之后,看起来要检查的光标是顶级项目的光标。是的,编译完成,谢谢。每个小部件都有自己的光标吗?它一直返回为0,即使我可以看到光标是我正在检查的形状之一。我正在调用其光标的小部件不是将其设置为大小形状的小部件。这是预期的吗?在文档中,如果未设置游标,或者在调用Unset cursor后,将使用父级的游标。默认情况下,这将返回Qt::ArrowCursor,其值为0。尝试在之前调用setCursor。在尝试之后,要检查的光标似乎是顶级项目的光标。