如何在Qt应用程序中设置默认系统鼠标图标?
据我所知,Qt有一组特殊的光标图标(与操作系统或光标主题附带的光标不同)。
...
<button style="cursor: pointer;">Test mouse cursor</button>
...
以手形鼠标图示为例:
默认手形光标设置在操作系统级别。
Qt游标 - 与操作系统游标不同。
我想使用在操作系统级别设置的鼠标图标主题,而不是使用Qt光标主题。
我该怎么做?
答案 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.