2011-12-03 29 views
5

Tôi liên tục sử dụng một cặp QComboBoxQListWidget trong một dự án. Tương tác của họ được kết hợp rất cao - khi một mục được chọn trong hộp kết hợp, danh sách được lọc theo một cách nào đó. Tôi đang sao chép dán tất cả các kết nối tín hiệu và khe cắm giữa hai tiện ích này trên nhiều triển khai hộp thoại mà tôi không nghĩ là một ý tưởng hay.Kết hợp nhiều tiện ích vào một trong Qt

Có thể tạo tiện ích tùy chỉnh, tiện ích con này sẽ giữ hai tiện ích này và sẽ có tất cả kết nối tín hiệu và vị trí ở một nơi không? Một cái gì đó như sau:

class CustomWidget 
{ 
    QComboBox combo; 
    QListWidget list; 

    ... 
}; 

Tôi muốn sử dụng tiện ích này làm tiện ích con.

Trả lời

11

Cách thông thường để thực hiện việc này là phân loại QWidget (hoặc 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; 

}; 

Xử lý tất cả sự tương tác giữa các danh sách và kết hợp trong đó widget tùy chỉnh (bằng cách kết nối các tín hiệu thích hợp để các khe thích hợp, có thể xác định khe của riêng bạn cho việc này).

Sau đó, bạn hiển thị hành vi/API của tiện ích con tùy chỉnh của mình thông qua các dấu hiệu và vị trí chuyên dụng, có thể bắt chước những người trong danh sách và/hoặc kết hợp.

Hướng dẫn Address book hướng dẫn bạn qua tất cả điều đó, bao gồm việc tạo tiện ích tùy chỉnh và xác định tín hiệu và thời điểm cho nó.

Các vấn đề liên quan