0
A
回答
0
如果您需要結合mousePress
和mouseRelease
的信息,您需要以某種方式跟蹤哪個按鈕仍然處於按下狀態,哪個按鈕已被再次釋放。
下面是一個簡單的比較例子似乎做你的描述(通過打印輸出指示的操作)
讓我知道,如果這有助於
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QMouseEvent>
#include <QtCore>
class MyGraphicsView: public QGraphicsView
{
public:
MyGraphicsView(QGraphicsScene *scene, QWidget *parent = 0) : QGraphicsView(scene,parent)
{
active[Qt::LeftButton] = false;
active[Qt::RightButton] = false;
active[Qt::MiddleButton] = false;
}
public slots:
virtual void mousePressEvent(QMouseEvent * event);
virtual void mouseReleaseEvent(QMouseEvent * event);
std::map< Qt::MouseButton, bool > active;
};
void MyGraphicsView::mousePressEvent(QMouseEvent * event)
{
active[event->button()] = true;
if(event->button() == Qt::LeftButton && !active[Qt::MiddleButton] && !active[Qt::RightButton]) {
qDebug() << "select";
} else if (event->button() == Qt::RightButton && !active[Qt::LeftButton] && !active[Qt::MiddleButton]) {
qDebug() << "property";
} else if (event->button() == Qt::LeftButton && active[Qt::MiddleButton] && !active[Qt::RightButton]) {
qDebug() << "zoom";
} else if (event->button() == Qt::MiddleButton && !active[Qt::LeftButton] && !active[Qt::RightButton]) {
qDebug() << "pan";
}
}
void MyGraphicsView::mouseReleaseEvent(QMouseEvent * event)
{
if(event->button() == Qt::LeftButton && active[Qt::LeftButton] && active[Qt::MiddleButton]){
qDebug() << "move";
}
active[event->button()] = false;
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
scene.setSceneRect(-100.0, -100.0, 200.0, 200.0);
MyGraphicsView view(&scene);
view.show();
return app.exec();
}
相關問題
- 1. 在Qt中用鼠標移動點PressPressEvent
- 2. 移動鼠標
- 3. 在組合框中禁用滾動鼠標移動(WPF)
- 4. jQuery的鼠標移動()獲取無鼠標移動
- 5. 滾動鼠標移動
- 6. Knob.js移動鼠標滾動
- 7. 鼠標移動opengl
- 8. 對鼠標移動
- 9. 度鼠標移動
- 10. XNA鼠標移動
- 11. GWT鼠標移動
- 12. 鼠標移動平移
- 13. 覆蓋WPF組合框中的鼠標移動行爲
- 14. 鼠標移動時div的鼠標移動改變鼠標移動時的元素
- 15. 鼠標移動-crosshair光標
- 16. 移動鼠標光標Javascript
- 17. 使用鼠標移動圖像移動
- 18. Div移動鼠標移動中心()
- 19. jquery鼠標移動到android touch移動
- 20. 在鼠標移動時移動div
- 21. wpf中的鼠標移動
- 22. C#塊的鼠標移動
- 23. 鼠標移動mouseout javascript不起作用
- 24. 鼠標移動工作不正常
- 25. 模擬鼠標移動,不工作
- 26. Qt:拖動時更改鼠標光標
- 27. jQuery - 動畫DIV上的鼠標移動
- 28. 鼠標移動的動畫菜單
- 29. jQuery的鼠標移動動畫
- 30. Qt-如何根據鼠標移動在屏幕上移動圖片
你的問題不是很清楚,你是什麼試圖做什麼? –
我有一個顯示內容的QWidget,這個顯示可以被操縱(移動,平移,縮放),我嘗試只使用鼠標。這會產生5個動作(移動,平移,縮放,選擇和右鍵單擊)以及鼠標上的3個按鈕。這就是爲什麼我試圖結合每個動作的鼠標移動:L + M - L =移動,僅Midle =泛,L + M =縮放,左=選擇,右=屬性。 – nathanael
您可以將mousePressEvent中的最後一個事件存儲爲一個類變量,然後從那裏構建它們,但是我真的建議您爲它查找不同的解決方案。 –