2011-12-03 3 views
5

프로젝트에서 QComboBoxQListWidget 쌍을 반복적으로 사용하고 있습니다. 상호 작용이 많이 결합되었습니다. 콤보 상자에서 항목을 선택하면 목록이 어떤 방식 으로든 필터링됩니다. 나는이 두 위젯 간의 모든 신호와 슬롯 연결을 여러 대화 상자 구현에 복사하여 복사하는 것이 좋을 것이라고 생각하지 않습니다.Qt에서 여러 위젯을 하나로 결합하십시오.

이 위젯을 보유하고 모든 신호와 슬롯 연결을 한 곳에서 가질 수있는 맞춤 위젯을 만들 수 있습니까? 다음과 같은 것 :

class CustomWidget 
{ 
    QComboBox combo; 
    QListWidget list; 

    ... 
}; 

위젯을 하나의 위젯으로 사용하고 싶습니다.

답변

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 자습서는 맞춤 위젯 만들기 및 신호 및 슬롯 정의를 포함하여 모든 과정을 안내합니다.

관련 문제