これは基本的にはthe same questionですが、私の問題はさらに深刻です。QT Creatorでカスタムコンストラクタを使用してカスタムウィジェットを宣伝する
次のツリーは私の構造を説明します
QWidget
|
CustomWidget
| |
MyTable MyWidgetAroundIt
私はQtのデザイナーでMyTable
を推進してきました。だから、MyWidgetAroundIt
に追加することができます。それはかなりうまくいった。唯一の問題は、CustomWidget
が、それはあまりにもCustomWidget
なるように親の必要があり、そのコンストラクタがどのように見えるされています。設計者は、コードではなくCustomWidget*
の、QWidget*
でMyTable
を初期化しようとすると生成されたとして
CustomWidget(CustomWidget* parent) : QWidget(parent), _specialValue(parent->getSpecialValue)
これは、コンパイルエラーが発生します。これを防ぐために、あるいはデザイナーにこの要件についてのヒントを与えるために、私は何ができますか?
私はあなたの最初のソリューションが移動するための方法である考え出しました。とにかく、私はデザイン全体を考え直しました。私の特別な価値は、私がしなければならないもののオプションのショートキーのようです。可能なリファクタリングを調べて、すべてを標準QWidget *の親に戻します。とにかく説明していただきありがとうございます!かなり明確な点を作った! – Migsi
これは非常に良い議論のようです。しかし、同じロジックに従えば、 'QWidget'は' QWidget'の親だけを許して(QObject'ではなく)liskovの原則を破るとは言えませんか? – Mike
これはAPIのバグです。これを修正するためにはQtのアーキテクチャに最小限の変更が必要ですが、現時点ではサポートされていません([試してみるとクラッシュする](http://stackoverflow.com/q/28992276/1329652))。それは修正するのが大したことではないでしょう、私はそれを例にするとは思いません。 –