我试图显示一个图像QAbstractTableModel.我试图返回QPixmap作为QVariant的data(),但它只是产生空单元格,当我希望在第二列的每一个细胞有一个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)
只有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文档.
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |