解決方法がわからない設計上の問題があるプロジェクトに取り組んでいます。コードの拡張性のための最良の解決策を見つけたいと思います。プロジェクトはタブ付きの Web ブラウザーで構成されていますが、タブには Web ページだけでなく、他の種類のウィジェットを含めることができます。私は Qt を使用しているため、タブ内のウィジェットは QWidgets (QWebview や、自分でコーディングする必要があるその他のタイプ) です。とにかく、私はこの質問を十分に一般的なものにしようとします。
QWebView と MyWidget の 2 つのクラスが継承するクラス QWidget があります。QWidget を含めることができるため、両方を含めることができるコンテナー (QTabWidget) があります。さらに、QWebView という 1 種類の QWidget にのみ適用されるボタン (たとえば、前のページ ボタン) があります。したがって、このボタンを押すと、QTabWidget に現在の QWidget を要求し、それが QWebView である場合は何かを行い、それ以外の場合は何もしません。それが問題です: 2 つの異なるタイプを区別できるようにする必要があります: QTabWidget に currentWidget を渡すように要求すると、QWidget* が返されますが、それが QWwbView なのか MyWidget なのかわかりません。したがって、実際の型を確認するには、厄介な dynamic_cast<> を実行する必要があります。つまり、別のアクションで新しい MyWidget2 を追加すると、
コマンドパターンとスターテジーパターンを考えているのですが、うまく当てはまらないと思います。
何かアドバイスはありますか?ありがとう