Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Borland от Март 01, 2012, 05:28



Название: Перемещение QPixmap в QAbstractTableModel
Отправлено: Borland от Март 01, 2012, 05:28
Здравствуйте!
Есть таблица QTableView, вставляю картинки и текст через QAbstractTableModel:
Код:
QVariant CurrencyModel::data(const QModelIndex &index, int role) const
{

if (!index.isValid())
return QVariant();
if (role == Qt::TextAlignmentRole) {
return int(Qt::AlignBottom);
}
else if (role == Qt::DisplayRole) {
sz=5*index.row();
QString amount = currencyAt(index.column()+sz);
return amount;
}
else if (role == Qt::DecorationRole) {
sz=5*index.row();
QPixmap pixmap;
QString amount = currencyAt(index.column()+sz);
qDebug()<<amount;
if(pixmap.isNull()) pixmap.load("radio.jpg");
pixmap.load(amount +".jpg");
pixmap=pixmap.scaled(50, 50, Qt::KeepAspectRatio);
return pixmap;
}
return QVariant();
}
QString CurrencyModel::currencyAt(int offset) const
{
if(offset >= currencyMap.size()) return "";
return (currencyMap.begin() + offset).key();
}

Получается как во вложении. Картинка всегда вставляется слева посередине. Нужно чтобы картинка была сверху, а текст под ней. Как это сделать?
Спасибо.


Название: Re: Перемещение QPixmap в QAbstractTableModel
Отправлено: vitalka от Март 01, 2012, 06:36
Отображение это не функция модели! Поэтому с помощью модели ты это никак не решишь. Это нужно либо настраивать QTableView (не знаю есть ли там такая настройка), либо наследовать класс от QTableView и там менять прорисовку ячейки.



Название: Re: Перемещение QPixmap в QAbstractTableModel
Отправлено: Borland от Март 01, 2012, 06:52
Через QItemDelegate делать картинки вставлять?