1

我有一个在 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);
4

1 回答 1

-1

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

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

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

于 2012-07-25T15:06:31.530 回答