如何在Qt中禁用禁用QScrollbar上下文菜单(windows xp)

时间:2012-07-04 12:16:29

标签: c++ qt qt-creator

我在Windows XP机器上运行了一个Qt应用程序,我试图最终禁用右键单击滚动条时弹出的上下文菜单(“向下滚动”和“向上翻页”等。 )在这个应用程序内。

我尝试了以下不起作用的事情:

ui->scrollArea->setContextMenuPolicy(Qt::NoContextMenu);
ui->scrollAreaWidgetContents->setContextMenuPolicy(Qt::NoContextMenu);            
ui->scrollArea->horizontalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu);

ui->scrollArea->setContextMenuPolicy(Qt::PreventContextMenu);
ui->scrollAreaWidgetContents->setContextMenuPolicy(Qt::PreventContextMenu);       
ui->scrollArea->horizontalScrollBar()->setContextMenuPolicy(Qt::PreventContextMenu);

1 个答案:

答案 0 :(得分:0)

我从来没有发现为什么它在我的上下文中没有真正起作用(它似乎与嵌套的小部件和对象有关)但我找到了一个类似于大锤方法的解决方案,但对我有用: / p>

foreach(QObject *widget, qApp->allWidgets())
{
    QScrollBar *scrollBar = dynamic_cast<QScrollBar*>(widget);
    if(scrollBar)
    {
        scrollBar->setContextMenuPolicy(Qt::NoContextMenu);
    }
}

这会在启动时禁用整个应用程序中滚动条(或修改后的其他对象)的上下文菜单。