外观和样式(07):【类】QCursor[官翻]

QCursor class

QCursor类提供具有任意形状的鼠标光标。

Header#include < QCursor >
qmakeQT += gui
Inherits
Inherited By
Since

详细说明

此类主要用于创建与特定小部件关联的鼠标光标,以及获取和设置鼠标光标的位置。

Qt有许多标准的光标形状,但是您也可以基于QBitmap、掩码和热点来定制光标形状。

要将光标与小部件关联,请使用QWidget::setCursor() 。要与所有小部件相关联(通常是短时间的),请使用QGuiApplication::setOverrideCursor() 。

要设置光标形状,请使用QCursor::setShape() 或使用以形状为参数的QCursor构造函数,也可以使用Qt::CursorShape枚举中定义的预定义光标之一。

如果要使用自己的位图创建光标,请使用QCursor构造函数(获取位图和掩码)或构造函数(获取pixmap作为参数)。
要设置或获取鼠标光标的位置,请使用静态方法QCursor::pos() 和QCursor::setPos() 。

注意:可以在QGuiApplication之前创建QCursor,但是除了作为在QGuiApplication之后创建的真正QCursor的占位符之外,它没有任何用处。在QGuiApplication 之前使用创建的QCursor将导致崩溃。

X11用户须知

在X11上,Qt支持Xcursor库,它支持全色图标主题。下表显示了用于每个Qt::CursorShape值的游标名称。如果使用下面显示的名称找不到游标,则将使用标准X11游标。注意:X11没有为所有可能的Qt::CursorShape值提供适当的游标。一些游标可能来自Xcursor主题,而其他游标则使用内部位图游标。

ShapeQt::CursorShapeCursor NameShapeQt::CursorShapeCursor Name
imgQt::ArrowCursorleft_ptrimgQt::SizeVerCursorsize_ver
imgQt::UpArrowCursorup_arrowimgQt::SizeHorCursorsize_hor
imgQt::CrossCursorcrossimgQt::SizeBDiagCursorsize_bdiag
imgQt::IBeamCursoribeamimgQt::SizeFDiagCursorsize_fdiag
imgQt::WaitCursorwaitimgQt::SizeAllCursorsize_all
imgQt::BusyCursorleft_ptr_watchimgQt::SplitVCursorsplit_v
imgQt::ForbiddenCursorforbiddenimgQt::SplitHCursorsplit_h
imgQt::PointingHandCursorpointing_handimgQt::OpenHandCursoropenhand
imgQt::WhatsThisCursorwhats_thisimgQt::ClosedHandCursorclosedhand
Qt::DragMoveCursordnd-move or moveQt::DragCopyCursordnd-copy or copy
Qt::DragLinkCursordnd-link or link

公共函数

构造和析构

  1. QCursor(QCursor &&other)
  2. QCursor(const QCursor &c)
  3. QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1)
  4. QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1)
  5. QCursor(Qt::CursorShape shape)
  6. QCursor()
  7. QCursor & operator=(QCursor &&other)
  8. QCursor & operator=(const QCursor &c)
  9. ~QCursor()

相关函数

  1. QBitmap bitmap(Qt::ReturnByValueConstant) const 返回光标位图,如果是标准光标之一,则返回空位图

    以前,Qt提供了bitmap() 的一个版本,它通过指针返回位图。该版本现在已被弃用。要保持与旧代码的兼容性,可以显式区分by pointer函数和by value函数:

     const QBitmap *bmpPtr = cursor->bitmap();
     QBitmap bmpVal = cursor->bitmap(Qt::ReturnByValue);
    

    如果你使用 QT_DISABLE_DEPRECATED_BEFORE 宏禁用弃用版本,那么你可以省略Qt::ReturnByValue,如下所示:

    QBitmap bmpVal = cursor->bitmap();
    
  2. QPoint hotSpot() const 返回游标热点,如果是标准游标,则返回(0,0)。

  3. QBitmap mask(Qt::ReturnByValueConstant) const 返回游标位图掩码,如果是标准游标,则返回空位图。
    以前,Qt提供了一个版本的mask(),它通过指针返回位图。该版本现在已弃用。为了保持与旧代码的兼容性,你可以显式地区分逐指针函数和逐值函数:

     const QBitmap *bmpPtr = cursor->mask();
     QBitmap bmpVal = cursor->mask(Qt::ReturnByValue);
    

    如果你使用QT_DISABLE_DEPRECATED_BEFORE宏禁用弃用版本,那么你可以省略Qt::ReturnByValue,如下所示:

    QBitmap bmpVal = cursor->mask();
    
  4. QPixmap pixmap() const 返回光标像素映射

    只有当游标是像素映射游标时,这个选项才有效。

  5. Qt::CursorShape shape() const
    void setShape(Qt::CursorShape shape)

    enum Qt::CursorShape 此enum类型定义了可以使用的各种游标。
    标准箭头光标是小部件正常状态下的默认光标。

    ConstantValueDescription
    Qt::ArrowCursor0img标准箭头光标。
    Qt::UpArrowCursor1img指向屏幕顶部的箭头。
    Qt::CrossCursor2img一种十字光标,通常用来帮助用户在屏幕上准确地选择一个点。
    Qt::WaitCursor3img一个沙漏或指针,通常在用户与应用程序交互时显示。
    Qt::IBeamCursor4img一个插入符号或ibeam光标,指示可以接受和显示文本输入。
    Qt::SizeVerCursor5img用于垂直调整顶级窗口大小的元素的游标。
    Qt::SizeHorCursor6img用于水平调整顶级窗口大小的元素的游标。
    Qt::SizeBDiagCursor7img在顶层窗口的右上角和左下角对角调整大小。
    Qt::SizeFDiagCursor8img在顶层窗口的左上角和右下角对角调整其大小。
    Qt::SizeAllCursor9img在任何方向上调整顶级窗口的大小。
    Qt::BlankCursor10空白/不可见的光标,通常在需要隐藏光标形状时使用。
    Qt::SplitVCursor11img垂直分割器的光标,指示可以水平拖动手柄来调整可用空间的使用。
    Qt::SplitHCursor12img水平分割器的光标,指示可以垂直拖动手柄以调整可用空间的使用。
    Qt::PointingHandCursor13img一种指针,通常用于超链接等可点击元素。
    Qt::ForbiddenCursor14img划圆光标,通常在拖放操作期间使用,指示拖放的内容不能放在特定的小部件上或某些区域内。
    Qt::WhatsThisCursor15img一个带问号的箭头,通常用来表示这是什么?小部件的帮助。
    Qt::BusyCursor16img一个沙漏或手表光标,通常显示在操作过程中,允许用户与应用程序交互,而他们在后台执行。
    Qt::OpenHandCursor17img代表一只张开的手的光标,通常用来表示光标下面的区域是画布的可见部分,用户可以单击和拖动以滚动。
    Qt::ClosedHandCursor18img一种表示握着的手的游标,通常用来表示正在进行涉及滚动的拖动操作。
    Qt::DragCopyCursor19一种光标,通常用于拖动一个项目以复制它。
    Qt::DragMoveCursor20一种光标,通常用于拖动一个项目。
    Qt::DragLinkCursor21一种光标,通常用于拖动一个项目以建立到它的链接。
    Qt::BitmapCursor24
  6. void swap(QCursor &other)

  7. QVariant operator QVariant() const

静态公用函数

  1. QPoint pos() 返回主屏幕的光标(热点)在全局屏幕坐标中的位置

    可以调用QWidget::mapFromGlobal() 将其转换为widget坐标。

    注:该位置从窗口系统查询。如果鼠标事件是通过其他方式生成的(例如,通过单元测试中的QWindowSystemInterface),那么这些假鼠标移动将不会反映在返回值中。

    注意:在没有窗口系统或光标不可用的平台上,返回的位置基于通过QWindowsSystemInterface生成的鼠标移动事件。

  2. QPoint pos(const QScreen *screen)

  3. void setPos(int x, int y)

  4. void setPos(QScreen *screen, int x, int y) 将屏幕的光标(热点)移动到全局屏幕位置(x,y)

    您可以调用QWidget::mapToGlobal() 将小部件坐标转换为全局屏幕坐标。

    注意:调用此函数会导致通过窗口系统更改光标位置。窗口系统通常会通过向应用程序的窗口发送鼠标事件来响应。这意味着在单元测试中以及通过QWindowSystemInterface注入假鼠标事件的任何地方都应该避免使用此函数,因为窗口系统的鼠标状态(例如关于按钮)可能与应用程序生成的事件中的状态不匹配。

    注意:在没有窗口系统或光标不可用的平台上,此功能可能不起任何作用。

  5. void setPos(const QPoint &p)

  6. void setPos(QScreen *screen, const QPoint &p)

相关的函数

  1. bool operator!=(const QCursor &lhs, const QCursor &rhs)
  2. bool operator==(const QCursor &lhs, const QCursor &rhs)
  3. QDataStream & operator<<(QDataStream &stream, const QCursor &cursor)
  4. QDataStream & operator>>(QDataStream &stream, QCursor &cursor)

演示代码

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);

    QRect scr = app.screens ().first ()->geometry ();
    qDebug() << scr;

    QTimer timer;
    int i = 0;
    double count = 100;
    double wd = scr.width () / count;
    double ht = scr.height () / count;
    qDebug() << wd << ht;
    QCursor::setPos (0,0);
    QObject::connect (&timer,&QTimer::timeout ,[&]{
        QCursor::setPos ( wd*i, ht*i );
        if(i++ > count) {
            timer.stop ();
            app.quit ();
        }
    });
    timer.start (30);

    app.exec();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值