Thay vì lúng túng bởi sự thiếu sót này - nhưng trong lớp QAbstractItemView của Qt, có thể đặt QAbstractItemDelegate (ví dụ: QItemDelegate hoặc QStyledItemDelegate) cho toàn bộ chế độ xem, một hàng hoặc một cột, sử dụng phương thức setItemDelegate*
. Ngoài ra, đại biểu mục cho một ô riêng lẻ có thể được truy vấn, với QAbstractItemView::itemDelegate(const QModelIndex&)
, cùng với ủy nhiệm cho hàng, cột. và toàn bộ khung nhìn. Nhưng dường như không có cách nào để đặt một mục được ủy quyền cho một ô riêng lẻ. Tui bỏ lỡ điều gì vậy? Có lý do gì không?Cách đặt đại biểu cho một ô trong chế độ xem mục Qt?
6
A
Trả lời
4
Không, bạn không thể đặt mục đại biểu chỉ cho một ô hoặc một cột nhưng bạn có thể dễ dàng đặt mục đại biểu cho toàn bộ tiện ích và chọn ô, cột hoặc hàng bạn muốn sử dụng bức tranh tùy chỉnh của mình hoặc gì đó.
Ví dụ:
void WidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (index.column() == 1)
{
// ohh it's my column
// better do something creative
}
else // it's just a common column. Live it in default way
QItemDelegate::paint(painter, option, index);
}
Bạn có thể tìm thấy một số thông tin here
2
tôi muốn khuyên bạn nên reimplementing chức năng createEditor thay vì:
QWidget * WidgetDelegate::createEditor(
QWidget *parent,
const QStyleOptionViewItem &,
const QModelIndex &index) const
{
QWidget *widget = 0;
if (index.isValid() && index.column() < factories.size())
{
widget = factories[index.column()]->createEditor(index.data(Qt::EditRole).userType(), parent);
if (widget)
widget->setFocusPolicy(Qt::WheelFocus);
}
return widget;
}
Các vấn đề liên quan
- 1. Cách tải chế độ xem cho một mục trong chế độ xem danh sách trong Android?
- 2. cách đặt đại biểu xem bảng
- 3. Cách đặt độ phóng đại/chiều rộng ban đầu cho chế độ xem web
- 4. Tải chế độ xem trong một chế độ xem khác
- 5. Cách đặt tên gói cho chế độ xem django javascript_catalog?
- 6. Nhiều PickerViews trong một Chế độ xem?
- 7. Có thể đặt một chế độ xem trên một chế độ xem khác trong Android không?
- 8. Cách đặt Chế độ xem thành Bó
- 9. Kéo các mục trong chế độ xem lưới
- 10. Cách tải tệp xib cho ô trong chế độ xem bảng trong iphone
- 11. Đặt hàng các mục Khung thực thể và mục con cho chế độ xem MVC
- 12. Ký tự đại diện trong Chế độ xem với CouchDB?
- 13. Trình điều khiển chế độ xem bảng phân cảnh hiện tại từ đại biểu ứng dụng?
- 14. Cách đặt đại biểu trong một lớp khác
- 15. Dòng Mulitiple trong một ô trong chế độ xem dữ liệu
- 16. Cách chuyển các tham số cho một chế độ xem
- 17. Bật chế độ chỉnh sửa cho chỉ một hàng trong chế độ xem bảng
- 18. Cách đặt @ model.attribute trong chế độ xem dao cạo?
- 19. Đăng biểu mẫu có nhiều chế độ xem một phần
- 20. Có cách nào để đặt thứ tự z trong lớp chế độ xem chú thích không?
- 21. Cách lấy tiêu đề của chế độ xem tiêu đề của phần khi chọn một ô
- 22. Nhiều Chế độ xem được liên kết với một chế độ xem
- 23. Cách đặt mục có thể nhấp trong chế độ xem danh sách?
- 24. Làm cách nào để chuyển đổi chế độ xem từ trong chế độ xem?
- 25. Android: đặt chế độ xem trống thành chế độ xem danh sách
- 26. Hiển thị chế độ xem từ chế độ không xem/chế độ xem trong mvvmcross
- 27. Chế độ xem cuộn cho chế độ xem văn bản trong android
- 28. Đặt một số mục trong chế độ xem lưới không thể nhấp được
- 29. Quy ước đặt tên cho chế độ xem Django?
- 30. tạo một chế độ xem html duy nhất cho nhiều chế độ xem một phần trong angularjs
Đây là lần đầu tiên tôi sử dụng các đại biểu - trên phương pháp của bạn, nếu các đại biểu tôi thiết lập là một spinbox, sẽ chỉnh sửa chỉ tiết lộ spinbox cho cột 1? Phạm vi spinbox không có hiệu lực đối với các cột khác không? –
Mọi thứ sẽ chỉ ảnh hưởng đến số cột 1. Tất cả các cột khác sẽ bị ảnh hưởng như trước đó. – Blood
Được rồi, nhưng phương pháp này là có thể có nhiều loại đại biểu cụ thể cho từng ô? Bạn có thể có một spinbox tại (0,2) và một thanh tiến trình tại (3,1) với đại biểu mặc định ở khắp mọi nơi khác? –