Qt应用程序的默认鼠标图标

时间:2014-09-17 06:11:39

标签: html qt mouse

如何在Qt应用程序中设置默认系统鼠标图标?

据我所知,Qt有一组特殊的光标图标(与操作系统或光标主题附带的光标不同)。

...
<button style="cursor: pointer;">Test mouse cursor</button>
...

以手形鼠标图示为例:

  

     

默认手形光标设置在操作系统级别。


  

     

Qt游标 - 与操作系统游标不同。

我想使用在操作系统级别设置的鼠标图标主题,而不是使用Qt光标主题。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用setOverrideCursor更改整个应用程序中的光标。只需在MainWindow的main或构造函数中调用它:

qApp->setOverrideCursor(QCursor(Qt::PointingHandCursor));

答案 1 :(得分:0)

但是setOverrideCursor()有一个缺点。正如文件所说:

将应用程序覆盖光标设置为光标。

应用程序覆盖游标用于向用户显示应用程序处于特殊状态,例如在可能需要一段时间的操作期间。

此光标将显示在所有应用程序的小部件中,直到调用restoreOverrideCursor()或其他setOverrideCursor()。

应用程序游标存储在内部堆栈中。 setOverrideCursor()将光标推送到堆栈上,restoreOverrideCursor()将活动光标弹出堆栈。 changeOverrideCursor()更改了激活的应用程序覆盖光标。

每个setOverrideCursor()最终必须跟有相应的restoreOverrideCursor(),否则堆栈永远不会被清空。

链接:http://qt-project.org/doc/qt-4.8/qapplication.html#setOverrideCursor

这意味着所有小部件都将拥有此光标,您无法对其进行更改。所以我有下一个解决方案:

将光标设置为主窗口,它将是默认光标,但您可以更改所需的每个小部件的光标,但是mainWindow的光标将是默认的。

例如:

this->setCursor(QCursor(Qt::PointingHandCursor));//it is default cursor
//qApp->setOverrideCursor(QCursor(Qt::PointingHandCursor));

QPixmap pix("path");
QCursor cur(pix);
ui->textEdit->viewport()->setCursor(cur);//when we hover the textEdit we get this pixmap as cursor.