【问题标题】:How to check current cursor shape in Qt如何在 Qt 中检查当前光标形状
【发布时间】:2013-05-27 19:20:31
【问题描述】:

Fedora 17 x64 上的 Qt 4.8

在我的QWidget::mouseMoveEvent 中,我试图检查光标当前是否设置为Qt::SizeVerCursorQt::SizeHorCursor,但调用QWidget::cursor() 返回的QCursor 不能与@987654326 中的任何一个进行比较@ 或 Qt::SizeHorCursor 因为编译错误。看起来这是因为Qt::SizeVerCursorQt::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 );
}

这里是编译错误:

error: no match for ‘operator==’ in ‘QWidget::cursor() const() == (Qt::CursorShape)6u’

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

【问题讨论】:

    标签: c++ qt qt4 cursor qwidget


    【解决方案1】:

    恕我直言 cursor().shape() 应该可以工作。

    【讨论】:

    • 是的,可以编译,谢谢。每个小部件都有自己的光标吗?尽管我可以看到光标是我正在检查的形状之一,但它仍然以0 的形式返回。我正在调用其cursor() 的小部件不是将其设置为大小形状的小部件。这是预期的吗?
    • 在文档中是,如果没有设置游标,或者在调用 unsetCursor() 之后,将使用父游标。默认情况下,这将返回 Qt::ArrowCursor,其值为 0。尝试调用 setCursor() 之前。
    • 经过试验,看起来要检查的光标是顶级项目的cursor()
    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多