[英]Cursor won't change for my QGraphicsView
我已經基於QGraphicsView創建了自己的小部件。 我這樣做是為了重新實現一些鼠標事件,例如:
void Workspace::mouseMoveEvent(QMouseEvent *event)
{
qDebug() << (QString("Mouse move (%1,%2)").arg(event->x()).arg(event->y()));
QGraphicsView::mouseMoveEvent(event);
}
以及安裝事件過濾器
bool Workspace::eventFilter(QObject* obj, QEvent* e)
{
if(e->type() == QEvent::Enter)
qDebug() << "Entered Workspace";
}
我不喜歡默認的“手”鼠標指針,因此決定使用
this->setCursor(Qt::CrossCursor);
在我的構造函數中。
但是,發生的情況是鼠標指針僅在小部件的第一個像素處才變成十字形。 當我進一步移動時,它會返回到默認的“手”光標,該光標用於表示拖動功能。
為什么會發生這種情況,如何將光標更改為自己喜歡的位置?
似乎使用
QApplication::setOverrideCursor(Qt::CrossCursor);
輸入小部件時,以及
QApplication::restoreOverrideCursor();
退出時,把戲。
我不確定為什么setCursor無法正常工作。
編輯
實際上使用上面的方法不是一個好主意,因為使用起來更簡單
QApplication::changeOverrideCursor(*mCurrentCursor);
這樣您就不必擔心其他任何事情,Qt會處理堆棧入隊/出隊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.