我正在尝试显示QAbstractTableModel
的图像。我尝试将QPixmap
作为QVariant
的{{1}}返回,但它只生成空单元格,而我希望第二列中的每个单元格都有20x20的黑色正方形。
这是我目前的代码:
data()
答案 0 :(得分:5)
对于具有标准委托的角色QVariant
,只能返回可转换为字符串的Qt::DisplayRole
。
您可以通过为角色Qt::DecorationRole
QVariant MySqlTableModel::data(const QModelIndex &idx, int role = Qt::DisplayRole) const
{
if (idx.column() == 1) {
if (role == Qt::DecorationRole) {
QPixmap pixmap(20,20);
QColor black(0,0,0);
pixmap.fill(black);
return pixmap;
} else if (role == Qt::DisplayRole) {
// For Qt::DisplayRole return an empty string, otherwise
// you will have *both* text and image displayed.
return "";
}
}
return QSqlTableModel::data(idx, role);
}
或者写自己的代表自己做画。有关详细信息,请参阅QStyledItemDelegate documentation。