6
我想显示一个图像从QAbstractTableModel
。我试过返回一个QPixmap
作为QVariant
的data()
,但它只产生空单元格,当我预计第二列中的每个单元格都有一个20x20的黑色正方形。显示QAbstractTableModel的图像
这是目前我的代码:
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);
}
是的,我认为它可以与代表完成,但这似乎是矫枉过正。我想没有更简单的方法?另外,如果我只想将代表应用于特定列,是否有办法做到这一点?目前我已经使用setItemDelegate将委托设置为整个TableView。然后,我必须在模型的data()函数以及委托的paint()函数中进行列检查(查看显示图像的列) - 这看起来像代码重复...在那里更好的方法? –
更简单的方法是在不使用委托的情况下使用'Qt :: DecorationRole'。但是你可以用'setItemDelegateForColumn'设置一个列的委托。 – alexisdm
啊,我怎么会错过setItemDelegateForColumn?谢谢! –