Tôi đang cố hiển thị hình ảnh từ QAbstractTableModel
. Tôi đã thử trả lại QPixmap
làm QVariant
của data()
, nhưng nó chỉ tạo ra các ô trống, khi tôi mong đợi mọi ô trong cột thứ hai có một hình vuông màu đen 20x20.Hiển thị hình ảnh từ QAbstractTableModel
này hiện mã của tôi:
QVariant MySqlTableModel::data(const QModelIndex &idx, int role = Qt::DisplayRole) const
{
if (role == Qt::DisplayRole && idx.column() == 1) {
QPixmap pixmap(20,20);
QColor black(0,0,0);
pixmap.fill(black);
return pixmap;
}
return QSqlTableModel::data(idx, role);
}
Tôi có thể làm được với một đại biểu, nhưng điều đó có vẻ như quá mức cần thiết. Tôi đoán không có cách nào dễ dàng hơn? Ngoài ra, nếu tôi chỉ muốn áp dụng các đại biểu cho một cột cụ thể, là có một cách để làm điều đó? Hiện tại tôi đã thiết lập ủy nhiệm cho toàn bộ TableView bằng cách sử dụng setItemDelegate. Sau đó, tôi phải làm kiểm tra cột (để xem cột nào được hiển thị trong) trong hàm data() của mô hình cũng như hàm paint() của đại biểu - điều này có vẻ như sao chép mã ... có Một cách tốt hơn? –
Cách dễ dàng hơn là sử dụng 'Qt :: DecorationRole' mà không cần dùng đại biểu. Nhưng bạn có thể thiết lập một đại biểu cho một cột với 'setItemDelegateForColumn'. – alexisdm
Ah, làm thế nào tôi có thể bỏ lỡ setItemDelegateForColumn? Cảm ơn! –