显示QAbstractTableModel中的图像

时间:2011-11-02 22:38:41

标签: qt qt4

我正在尝试显示QAbstractTableModel的图像。我尝试将QPixmap作为QVariant的{​​{1}}返回,但它只生成空单元格,而我希望第二列中的每个单元格都有20x20的黑色正方形。

这是我目前的代码:

data()

1 个答案:

答案 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