2

私はいくつかの を含むQToolButton付属品を持っています。これらのアクションの 1 つがボタンのデフォルト アクションです。アクションをクリックすると、デフォルトのアクションが動的に変化し、これはうまく機能します。QMenuQActions

現在、これらQActionsはシグナルによって有効化および無効化されます。(現在の)デフォルト アクションQToolButtonが無効になると、 も無効になります。

これにより、選択できるようにしたい有効なエントリ ( )QMenuがまだ含まれているアクセス不能になります。QMenuQActions

だから:デフォルトのアクションが取得されているときに、どうにかしてメニューを利用できるようにすることはできますsetEnabled(false)か?または、他のアイデアはありますか?

4

3 に答える 3

1

説明どおりに問題を正確に解決するために、次のことを行いました。

私のQToolButtonクラスでは、次のようにオーバーライドeventFilterします。

bool MultiToolButton::eventFilter( QObject* inObject, QEvent* inEvent )
{
  MultiToolButton* _multiToolButton = 
    dynamic_cast<MultiToolButton*>(inObject);
  QMouseEvent* _mouseEvent = dynamic_cast<QMouseEvent*>(inEvent); 

  if(_multiToolButton 
    && _mouseEvent && _mouseEvent->type() == QEvent::MouseButtonPress)
  {
    mMenu.setEnabled(true);
    showMenu();
    return true;
  }

  return QToolButton::eventFilter(inObject, inEvent);
}

次の行をコンストラクターに追加します。

installEventFilter(this);

それにもかかわらず、あなたの答えをありがとう。しかし、私はそれをチェックしませんでした。

于 2014-08-14T11:22:52.677 に答える