显示QAbstractTableModel中的图像

Dav*_*ria 6 qt qt4

我试图显示一个图像QAbstractTableModel.我试图返回QPixmap作为QVariantdata(),但它只是产生空单元格,当我希望在第二列的每一个细胞有一个20×20的黑色正方形.

这是我目前的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

ale*_*sdm 5

只有QVariant可以转换成字符串s可以返回该角色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);
}
Run Code Online (Sandbox Code Playgroud)

或者写自己的代表自己做画.有关更多详细信息,请参阅QStyledItemDelegate文档.