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 に答える