Planned maintenance has been done but it did not solve the problem. So work will continue on this and a new time for trying updates will be announced asap.

Resizing image to display in TableView

  • Hi,
    I'm trying to resize an image pulled from a database to be able to display it in TableView.

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    MainWindow::MainWindow(QWidget *parent) :
        ui(new Ui::MainWindow)
        QSqlDatabase db;
            db = QSqlDatabase::addDatabase ("QSQLITE");
            db.setDatabaseName ("C:/Programming/Qtsamples/Image_from_db_to_Table/db.db");
            if(! ())
                qDebug() << "The database is NOT open!";
                qDebug() << "The database is open!";
            QSqlQuery query("SELECT ID,Pic FROM Items");
                  qDebug() << "The query is active.";
                 qDebug() << "The query is NOT active.";
            query.first ();
           	int ID;
            QStandardItemModel *smodel = new QStandardItemModel;
            QStandardItem *Item = new QStandardItem();
            QStandardItem *Item2 = new QStandardItem();
            Item->setData (QVariant(ID = query.value (0).toInt ()));
            qDebug() << "ID = " << Item->data ().toInt ();
            smodel->setItem (0,0,Item);
            QByteArray ByteArray;
            ByteArray = query.value (1).toByteArray ();
         	QPixmap Pixmap;
    		Pixmap.loadFromData (ByteArray);
    		Pixmap.scaled (100,100,Qt::KeepAspectRatio);
            Item2->setData (QVariant(Pixmap),Qt::DecorationRole);
    		smodel->setItem (0,1,Item2);
            ui->tableView->verticalHeader ()->setDefaultSectionSize (100);
            ui->tableView->horizontalHeader ()->setDefaultSectionSize (100);
            ui->tableView->setModel (smodel);
    db.close ();
        delete ui;

    It displays the image but without resizing. What can I do differently to be able to see the whole image?
    Thank you.

  • May be you can try this

     Pixmap.scaled (100,100 Qt::IgnoreAspectRatio, Qt::FastTransformation));

  • Lifetime Qt Champion

    The scaled function returns the modified version
    not changing the original one.
    Pixmap.scaled (100,100,Qt::KeepAspectRatio);
    should be
    Pixmap=Pixmap.scaled (100,100,Qt::KeepAspectRatio);
    QPixmap myscaled=Pixmap.scaled (100,100,Qt::KeepAspectRatio);
    If you want to use the scaled version later on.

  • Thank you. It worked.