6
QAbstractTableModel
からイメージを表示しようとしています。私はQPixmap
をQVariant
のdata()
として返そうとしましたが、2番目の列のすべてのセルが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を逃すことができますか?ありがとう! –