1

QWidgetとモデルクラスから派生したクラスがあります。私の読書に基づいて、QObjectから派生するモデルクラスを持つことはできません。

class PageWidget : public QWidget,
        public MyModelClass
{
...
};

モデルクラスMyModelClassには、setWidth(bool)などのプロパティを設定するメソッドが既にあります。これらの方法を直接スロットとして使用することはできないようです。私が宣言した場合:

QObject :: connect(button、SIGNAl(dataChanged(bool))、this、SLOT(setWidth(bool)));

Qtは、実行時にスロットsetWidth(bool)がないと文句を言います。MyModelClassの同じメソッドを呼び出すだけのPageWidgetに各メソッドを手動で追加する必要があります。

すべてのメソッドを再宣言せずに基本メソッドをスロットに入れる方法はありますか?

4

1 に答える 1

5

QMetaObject(スロットを使用できるようにするQt部分)と多重継承は混在しません。「パススルー」スロットを作成するソリューションは、それを解決する方法です。ただし、多重継承を行う必要がない場合は、行いません。見た目だけでは、PageWidgetがウィジェットとモデルの両方から派生するのは奇妙に思えます。代わりにモデルを含める方がおそらく理にかなっています。

于 2011-10-10T18:18:56.620 に答える