2011-12-03 5 views
5

プロジェクトでQComboBoxとのペアを繰り返し使用しています。それらの相互作用は高度に結合されています。コンボボックスでアイテムが選択されると、リストは何らかの方法でフィルタリングされます。私は良いアイデアだとは思わない複数のダイアログボックスの実装間で、これらの2つのウィジェット間のすべての信号とスロットの接続をコピーしてコピーしています。複数のウィジェットをQtで1つにまとめる

これらの2つのウィジェットを保持し、すべての信号とスロットの接続を1か所で保持するカスタムウィジェットを作成できますか?

class CustomWidget 
{ 
    QComboBox combo; 
    QListWidget list; 

    ... 
}; 

私はこのウィジェットを1つのウィジェットとして使いたいと考えています。

答えて

11

これを行う通常の方法は、サブクラスQWidget(またはQFrame)です。

class CustomWidget: public QWidget { 
Q_OBJECT 

CustomWidget(QWidget *parent) 
    : QWidget(parent) { 
    combo = new QComboBox(...); 
    list = new QListWidget(...); 
    // create the appropriate layout 
    // add the widgets to it 
    setLayout(layout); 
} 

private: 
    QComboBox *combo; 
    QListWidget *list; 

}; 

リストと(多分これのために、独自のスロットを定義し、適切なスロットに適切な信号を接続することによって)そのカスタムウィジェットのコンボとの間のすべての対話を処理します。

カスタムウィジェットのビヘイビアー/ APIを専用のシグナルとスロットで公開します。リストやコンボのものを模倣する可能性があります。

Address bookチュートリアルでは、カスタムウィジェットの作成やシグナルとスロットの定義など、すべての手順を説明します。

関連する問題