MousePresseEvent(QMouseEvent*)上的setCursor()在释放鼠标之前不会更改光标。(Qt v5.5.1)

MousePresseEvent(QMouseEvent*)上的setCursor()在释放鼠标之前不会更改光标。(Qt v5.5.1),qt,user-interface,Qt,User Interface,我正在使用Qt5.5.1为CentOS编写一个Qt应用程序 void mouseReleaseEvent (QMouseEvent * event) { setCursor (Qt::ArrowCursor); //Reset to default arrow cursor. } void mousePressEvent (QMouseEvent * event) { setCursor (QCursor (QPixmap (":/Drag_and_Drop_bubble.png"

我正在使用Qt5.5.1为CentOS编写一个Qt应用程序

void mouseReleaseEvent (QMouseEvent * event)
{
   setCursor (Qt::ArrowCursor); //Reset to default arrow cursor.
}

void mousePressEvent (QMouseEvent * event)
{
   setCursor (QCursor (QPixmap (":/Drag_and_Drop_bubble.png"))); //Customized cursor. This works well when set inside constructor (during initialization).
}
要求:我希望鼠标左键按下时光标发生变化。光标应保持不变,直到释放鼠标单击。释放鼠标单击后,光标应重置为默认光标

问题陈述:鼠标左键点击时光标不会改变。它仅在我释放左键后才会更改[为了验证这一点:我在mouseReleaseEvent()中注释了setCursor()函数]。为什么鼠标左键单击后和单击释放前光标不改变?有人遇到过这样的问题吗


谢谢您的帮助。

可能是因为它没有立即更新ui。我以前也有过这种情况

试试这个:

void mouseReleaseEvent (QMouseEvent * event)
{
   setCursor (Qt::ArrowCursor); //Reset to default arrow cursor.
   this->update();         
}

void mousePressEvent (QMouseEvent * event)
{
   setCursor (QCursor (QPixmap (":/Drag_and_Drop_bubble.png"))); //Customized cursor. This works well when set inside constructor (during initialization).
}

如果它不起作用,你的类是从什么派生的?(这样我可以尝试重新创建这些函数)

可能是因为它不会立即更新ui。我以前也有过这种情况

试试这个:

void mouseReleaseEvent (QMouseEvent * event)
{
   setCursor (Qt::ArrowCursor); //Reset to default arrow cursor.
   this->update();         
}

void mousePressEvent (QMouseEvent * event)
{
   setCursor (QCursor (QPixmap (":/Drag_and_Drop_bubble.png"))); //Customized cursor. This works well when set inside constructor (during initialization).
}

如果它不起作用,你的类是从什么派生的?(这样我可以尝试重新创建这些函数)

自己无法复制该问题。请确保参考资料中提供了Drag_和Drop_bubble.png。您是否尝试过使用预定义的游标,例如Qt::PointingHandCursor?你能发布一个最小的可复制示例吗?@Meliodas我正在通过VNC查看器远程访问机器。如果我直接在机器上使用鼠标(无远程),气泡光标会出现,并且使用HMI的触摸监视器(在触摸监视器上工作)也会出现气泡光标。现在的问题是由于VNC,因为VNC没有显示光标已更新为气泡光标。它仅在触发mouseReleaseEvent()时显示。@Meliodas拖放泡泡.png资源正确可用,因为mouseReleaseEvent()触发器上显示相同的内容。当我通过VNC访问时,气泡光标也会出现在监视器上,但在VNC查看器上看不到相同的气泡光标。我自己无法复制该问题。请确保参考资料中提供了Drag_和Drop_bubble.png。您是否尝试过使用预定义的游标,例如Qt::PointingHandCursor?你能发布一个最小的可复制示例吗?@Meliodas我正在通过VNC查看器远程访问机器。如果我直接在机器上使用鼠标(无远程),气泡光标会出现,并且使用HMI的触摸监视器(在触摸监视器上工作)也会出现气泡光标。现在的问题是由于VNC,因为VNC没有显示光标已更新为气泡光标。它仅在触发mouseReleaseEvent()时显示。@Meliodas拖放泡泡.png资源正确可用,因为mouseReleaseEvent()触发器上显示相同的内容。当我通过VNC访问时,气泡光标也会出现在监视器上,但在VNC查看器上看不到相同的气泡光标。问题是因为我正在远程访问系统,所以出现了VNC查看器。但是,在使用鼠标/触摸屏直接访问系统时,气泡光标会正确显示。当我通过VNC访问时,气泡光标也会出现在监视器上,但在VNC查看器上看不到相同的气泡光标。@PankajKumarThapa您好,很抱歉造成误解。不幸的是,我不知道如何帮助你。你可以在Qt论坛上问同样的问题。那里有很多人可能知道您的问题的答案/问题是因为VNC Viewer,因为我正在远程访问系统。但是,在使用鼠标/触摸屏直接访问系统时,气泡光标会正确显示。当我通过VNC访问时,气泡光标也会出现在监视器上,但在VNC查看器上看不到相同的气泡光标。@PankajKumarThapa您好,很抱歉造成误解。不幸的是,我不知道如何帮助你。你可以在Qt论坛上问同样的问题。那里有很多人可能知道你问题的答案/