2017-10-09 15 views
0

タイトルバーには、コンテキストヘルプボタンと閉じるボタンの2つのボタンがあります。カスタムアクションを実行するために、ユーザーがコンテキストヘルプボタンをクリックしたことをどのようにして知ることができますか? (私はVSダイアログのようにブラウザにヘルプページを表示したい)カスタムアクションでコンテキストヘルプボタンをクリックする方法を教えてください。

私は同様の質問を見つけましたが、qtでこれを行う方法は? Context help button behaviour on CPropertySheet

アップデート。 は今、私はこのようなコードを使用します。

class MyHelper : public QObject 
{ 
    Q_OBJECT 

public: 
    explicit MyHelper(QObject * parent = nullptr) { 
     qApp->installEventFilter(this); 
    } 

protected: 
    virtual bool eventFilter(QObject * obj, QEvent * ev) override { 
     if (ev->type() == QEvent::EnterWhatsThisMode) { 
      showHelp(QApplication::activeWindow()); 
      return true; 
     } 
     return QObject::eventFilter(obj, ev); 
    } 

private: 
    void showHelp(QWidget * sender) { 
     //TODO 
    } 

}; 

答えて

1

私はQWidget::nativeEventあなたが探しているものであると信じています。

+0

クロスプラットフォームは動作しません。 – olya

+0

このヘルプボタンはクロスプラットフォームではないため、プラットフォーム固有のコードを記述する必要があります。 – Andrii

+0

答えをありがとう。これは標準の 'qWindowsWndProc'が' wParam == SC_CONTEXTHELP'の 'WM_SYSCOMMAND'メッセージを' EnterWhatsThisMode'イベントに変換してqAppに送信するのを助けました。 – olya

関連する問題