LINUX.ORG.RU

Столбец картинок в QTableView

 , ,


0

2

Есть БД, одну из таблиц которых отображаю на форме с помощью QTableView.

Нужно в QTableView добавить столбец с картинками в ячейках, картинка зависит от значения в соседней ячейке. При этом таблицу в БД менять не надо.

Как пример - в столбце выводится температура, надо добавить еще столбец с картинками, зависящими от температуры.

Как добавить к модели столбец разобралась:

queryModel.insertColumn(11);
queryModel.setHeaderData(11, Qt::Horizontal, tr("Картинка"));

Даже удалось вставить картинку в ячейку:

QLabel *imageLabel = new QLabel();
imageLabel->setPixmap(...);
ui->tableView->setIndexWidget(index, imageLabel);

Но в таком случае надо перебирать все строки и для каждой делать new QLabel...

Можно как-то получше сделать? Или это нормально?

Если с помощью делегата, то не понимаю как.

class paintDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    paintDelegate(QObject * parent = 0) : QItemDelegate(parent) {}
    void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
    {

        if(index.row() == 11)
        {
		// омайгад, что же тут писать
        }
        else
        {
            QItemDelegate::paint(painter , option , index) ;
        }
    }

};

Помогите, пожалуйста =)

Как пример возьми star delegate example

XMs ★★★★★
()

Можно сделать свой класс, унаследованный от QSqlQueryModel, переписать методы

columnCount(const QModelIndex &index)
и
data(const QModelIndex &item, int role)
ИМХО, мудрить со встраиванием виджетов и делегатами не стоит, особенно для больших таблиц.

XyAH
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.