2011-08-30 28 views
5

Dưới đây là những gì tôi đang cố gắng để có được (đây là một QTableView phụ tùng + MVC dựa trên QAbstractTableModel với nhân đại biểu):Làm thế nào để tạo mô hình/xem QTableView với các đại biểu tùy chỉnh (không thể chỉnh sửa)?

enter image description here

Ghi chú:

  • Ủy quyền một người không làm biên tập viên, họ CHỈ là người xem! Tôi không được chỉnh sửa mô hình với chế độ xem bảng này.

  • Đại biểu phải có thể thực hiện được. Điều đó có nghĩa là tổng chiều cao của hàng BLUE có thể là 25px hoặc 250px.

  • MV là dữ liệu đơn giản:

    1ROW: CompanyName1 NAME1, NAME2, NAME3 KHÁC DỮ LIỆU

    2ROW: CompanyName2 SingleName1 KHÁC DỮ LIỆU

    3ROW: CompanyName3 NAME1, NAME2 KHÁC DỮ LIỆU và vân vân. ..

Câu hỏi:

  • Bạn có thể tạo đại biểu tùy chỉnh (QItemDelegate hoặc QStyleItemDelegate), ví dụ: vào cột thứ 2 như trên hình ảnh ở trên không? Và nếu có thể, có thể bạn có thể cho tôi một số ví dụ hoặc liên kết tài nguyên nơi tôi có thể xem chúng.

PS. Có, tôi đã xem tất cả các ví dụ Qt Demo với các đại biểu, nhưng tôi không hiểu, làm cách nào để làm những gì tôi muốn.

PSS. QTableView ->setIndexWidget() Tôi nghĩ đó không phải là một ý tưởng hay. Nhưng QTableView ->setItemDelegateForColumn(myCustomDelegate) phương pháp tốt hơn!

P3S. Tôi không tìm giải pháp cho QTableWidget lớp học ...

Cảm ơn bạn đã trả lời! :-)


Update # 1:

  • Tôi nghĩ rằng:

    • Các đại biểu chỉ được sử dụng cho lần sửa đổi (ví dụ, nếu chúng ta đang làm việc với mô hình/xem đối tượng) và quản lý các mục tương tự (tất cả/chỉ cột/chỉ hàng).

    • Tiện ích tùy chỉnh tốt hơn, nhưng tôi chưa gặp chúng trong các dự án Qt miễn phí. Và nó không phải là quá dễ dàng để có được mã tốt đẹp và chính xác của các loại vật dụng như vậy ...


Addition:

  • Đây là link để tương đồng câu hỏi.
+0

Bạn có thể mô tả cách bạn tìm nạp dữ liệu từ mô hình của mình không? Bạn có đang sử dụng Vai trò tùy chỉnh không? Ví dụ: tôi sẽ nhận được 'CompanyName2' cho một hàng cụ thể như thế nào? – Casey

+0

Hiện tại, tôi không có giải pháp như vậy. Chỉ 'QTreeWidget' + widget tùy chỉnh của tôi. Trong câu hỏi của tôi, tôi đang tìm câu trả lời chứa thông tin về việc tham gia như: xem bảng, mô hình và đại biểu cùng nhau ... – mosg

+0

@mosg sẽ dễ dàng hơn nhiều nếu bạn đưa vào ví dụ làm việc tối thiểu trong đó bạn muốn làm X. Thành thật mà nói, tôi thấy ví dụ đại biểu của spinbox rất hữu ích và đơn giản. http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html. Tôi làm việc trong python, vì vậy không thể giúp quá nhiều với các chi tiết cụ thể, ngoài câu trả lời dưới đây: nó thực sự khá dễ dàng - chỉ cần thực hiện lại việc vẽ cho một mô hình chỉ đọc. Phần còn lại của công việc quay trở lại lớp cơ sở đại biểu. – neuronet

Trả lời

0

Đại biểu không chỉ hữu ích để tạo tiện ích được sử dụng trong chỉnh sửa. Chúng cũng được sử dụng trong việc tạo ra cái nhìn tổng thể và cảm nhận của mỗi chỉ mục có thể nhìn thấy (trong trường hợp này là một ô bảng).

Bạn có thể tùy chỉnh tạo giao diện bằng cách thực hiện lại phương thức paint() của người được ủy quyền.

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