[英]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.