2016-07-27 99 views
1

是否可以創建一個可移動的QGraphicsItem,它是用鼠標右鍵而不是左鍵移動的?使QGraphicsItem可以通過鼠標右鍵而不是左移動

我通過搜索找到的唯一東西是一個線程which suggests using QGraphicsItem::setAcceptedMouseButtons(),我試圖將它設置爲只接受正確的點擊,但隨後項目停止了移動。

這是我試過的代碼:

QGraphicsScene *scene = new QGraphicsScene(this); 
ui->graphicsView->setScene(scene); 
QGraphicsRectItem *item = scene->addRect(0, 0, 100, 100); 
item->setFlag(QGraphicsItem::ItemIsMovable); 
item->setAcceptedMouseButtons(Qt::RightButton); 
+2

不幸的是,無論傳遞給setAcceptedMouseButtons的參數如何,'QGraphicsItem :: mouseMoveEvent'中的代碼都是硬連接的,只能移動到左邊的按鈕上。所以,如果你想要移動到右邊的按鈕,我想你必須重寫'mouseMoveEvent'並自己動手。 –

+1

謝謝,這也是我所懷疑的,儘管我不確定。我可能會嘗試過濾事件並替換鼠標按鈕來欺騙左鍵單擊的對象,同時過濾出實際的左鍵單擊。 – sashoalm

回答

1

我看着源代碼,最終,和@ G.M。指出,)的QGraphicsItem的代碼:: mouseMoveEvent(明確檢查鼠標左鍵:

void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) 
{ 
    if ((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable)) { 

所以沒有什麼可以重新實現,除了在派生類中移動來完成。

相關問題