簡體   English   中英

如何在輪子事件QGraphicsView Qt C ++上禁用滾動功能

[英]How to disable scrolling functionality on wheel event QGraphicsView Qt C++

我有一個圖形視圖,當用戶按下控制和鼠標點擊時,我設置了自己的手動滾動功能。

我已經刪除了滾動條但鼠標滾輪仍然會滾動,甚至滾動顯示在qGraphicsView顯示的圖像,顯​​示空白(白色)空間,而我的手拖動不會。

我怎么做它所以輪子直接向上什么都沒做?

我知道有一個函數,我可以放入我的代碼而沒有派生類,因為我之前問了一次並得到了正確的答案,但答案被刪除了,我沒有保存代碼:(

下面的代碼甚至沒有做任何接近預期的功能,啟動時我得到鼠​​標仍然做一些消息然后所有點擊和車輪事件一切只顯示第二條消息...所以是不工作

bool GUI::eventFilter(QObject *object, QEvent *event)
 {
     if (object == ui->graphicsView && event->type() == QEvent::GraphicsSceneWheel)
     {
         std::cout << "Wheel Blocked";
         return true;
     }
     std::cout << "Mouse Wheel still doing something";
     return false;
 }

然后這段代碼安裝過濾器

ui->graphicsView->installEventFilter(this);

安裝eventfilter並過濾

QEvent::GraphicsSceneWheel

在你的應用中創建這樣的東西

bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
    if (object == ui->graphicsView->viewport() && event->type() == QEvent::Wheel) {
        qDebug() << "SCroll";
        return true;
    }
    return false;
}

並安裝到您的小部件。

yourwidget->viewport()->installEventFilter(this);

編輯:我認為它應該適用於QEvent :: GraphicsSceneWheel。 如果有人知道為什么使用Wheel,請解釋

此外,您可以使用繼承來修改QGraphicsView

class MyCustomGraphicsView : public QGraphicsView
{

virtual void    wheelEvent ( QWheelEvent * event )
{
//here you can modify wheel-event
}

}

這很簡單,因為qt-designer可以將表單上的GraphicsView元素與繼承的類相關聯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM