2012-06-18 32 views
15

Tôi đang cố gắng tạo bảng điều khiển bên có thể thu gọn tương tự như bảng điều khiển trong Thiết kế Qt (Xem ảnh chụp màn hình đính kèm). Chúng dường như là QListViews được đặt trong một số loại tiện ích có thể thu gọn.Có một thành phần tiêu chuẩn cho bảng điều khiển đóng mở trong Qt không?

enter image description here

Tôi googled cho "Qt bảng điều khiển đóng mở" và có vẻ như là không có thành phần tiêu chuẩn cho điều này, hoặc ít nhất là không dưới tên đó. Vì vậy, không ai biết liệu bất kỳ thành phần Qt tiêu chuẩn có hành vi tương tự? Nếu không, bất cứ ai có thể gợi ý làm thế nào tôi có thể đi về xây dựng nó?

Cảm ơn.

+2

Hành vi không giống với QTreeView? Các mục cấp cao nhất là các danh mục tiện ích và các mục cấp dưới cùng là chính các tiện ích con? Có lẽ bạn có thể phân lớp một QTreeView và tùy chỉnh giao diện của các mục cấp cao nhất và làm cho chúng mở rộng trên một cú nhấp chuột. – Claudio

Trả lời

13

Tôi quyết định theo cách tiếp cận chung được nêu trong liên kết do Joey cung cấp.

Cụ thể, tôi đã tạo một tiện ích cho mỗi danh sách có thể thu gọn. Widget này bao gồm một QPushButton ở phía trên và một QListView ở phía dưới.

Sau đó, tôi đã kết nối nút bấm tín hiệu với trình xử lý để chuyển đổi hình học của QListView giữa độ cao 0 khi bị ẩn và chiều cao ban đầu khi nó xuất hiện trở lại.

Tôi thấy rằng cách tiếp cận này đơn giản hơn nhiều so với tùy chỉnh sự kiện sơn theo đề xuất của Claudio. Hơn nữa, tôi có thể sử dụng QAnimationProperty để tạo hiệu ứng thay đổi trong hình học để làm cho danh sách xuất hiện thành "trượt" trong và ngoài tầm nhìn.

Nhưng dù sao cảm ơn bạn đã trả lời!

+2

Có lẽ bạn sẽ không cần phải tùy chỉnh sự kiện sơn, có thể là đủ để điều chỉnh kiểu hiển thị. Đối với các mục cấp cao nhất, bạn đặt căn giữa, nền khác và biểu tượng hình tam giác hướng xuống dưới khi chúng được mở rộng và tắt trang trí gốc. Ảnh động được xử lý bởi QTreeView. Lợi thế là bạn chỉ cần cung cấp một mô hình cây, cho dù có bao nhiêu mục cấp cao nhất. Với giải pháp của bạn nếu bạn thêm danh mục, bạn phải sửa đổi tiện ích của mình và các mục của bạn sẽ được trải rộng trong nhiều chế độ xem. Nếu điều này không liên quan đến bạn thì giải pháp của bạn sẽ ổn thôi. – Claudio

+0

Xin chào. Cám ơn vì sự gợi ý. Tôi sẽ xem xét khả năng tùy biến một QTreeView. Những gì bạn mô tả thực sự âm thanh như một cách tiếp cận linh hoạt hơn. Nhưng hiện tại tôi chỉ cần hiển thị các mục ở một cấp độ duy nhất. Mối quan tâm chính của tôi vẫn là giao diện người dùng sẽ trông như thế nào. Nếu QTreeView có thể tạo ra cái nhìn và cảm giác mong muốn, tôi sẽ đi với nó. Dù sao cảm ơn cho gợi ý hữu ích! – lightalchemist

+10

Bạn có thể chia sẻ mã của mình không? – SomethingSomething

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