Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Displaying an image

Displaying an image

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 562 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    gabor53
    wrote on last edited by
    #1

    Hi,
    I have a QStandardItemModel which displays certain rows from a database. through a tableView.

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
    //    connection();
        Addview();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::Addview()
    {
        connectionNames = db.connectionNames ();
    
        if((connectionNames.contains ("qt_sql_default_connection")) == false)
            {
                db = QSqlDatabase::addDatabase ("QSQLITE");
                db.setDatabaseName (fileQstring);
                qDebug() << "Connection Display created in connection(). ";
            }
    
        qDebug() << "Open connection names: " << db.connectionNames ();
    
    
        if(!db.open ())
            {
                qDebug() << "The database (db) is NOT open!";
            }
    
        QSqlQuery query_main  ("SELECT ID,Name,Pic, Description FROM Items ORDER BY NAME ASC ");
    
        if(query_main.isActive()==true)
            {
                qDebug() << "The query is active.";
            }
        else
            {
                qDebug() << "The query is NOT active." << query_main.lastError ();
            }
    
        QStandardItemModel *smodel = new QStandardItemModel(this);
        ui->tableView->setModel (smodel);
    
        for(int row1 = 0; query_main.next (); row1++)
            {
                if(row1 == 0)
                    {
                        const QSqlRecord qRec = query_main.record();
                        qDebug() << "The number of records: " << qRec;
                        smodel->insertColumns (0, qRec.count());
                    }
                smodel->insertRow (row1);
                smodel->setData (smodel->index (row1,0),query_main.value (0).toString ());
                smodel->setData (smodel->index (row1,1),query_main.value (1).toString ());
                Pixmap.loadFromData (query_main.value (2).toByteArray ());
                Pixmap = Pixmap.scaled (100,100,Qt::KeepAspectRatio);
                smodel->setData (smodel->index (row1,2),Pixmap,Qt::DecorationRole);
                smodel->setData (smodel->index (row1,3), query_main.value (3).toString ());
                ui->tableView->setRowHeight (row1,100);
            }
        ui->tableView->horizontalHeader ()->setStyleSheet ("QHeaderView{font: 14pt Arial; color: blue; font-weight: bold;}");
        ui->tableView->verticalHeader ()->setVisible (false);
        ui->tableView->setAlternatingRowColors (true);
        ui->tableView->setStyleSheet ("alternate-background-color: rgb(224,255,248); background-color: white; font: 14pt Arial");
        ui->tableView->setEditTriggers (QAbstractItemView::NoEditTriggers);
        smodel->setHeaderData (0,Qt::Horizontal, QObject::tr ("ID"));
        smodel->setHeaderData (1,Qt::Horizontal, QObject::tr ("Name"));
        smodel->setHeaderData (2,Qt::Horizontal, QObject::tr ("Picture"));
        smodel->setHeaderData (3,Qt::Horizontal, QObject::tr ("Description"));
        ui->tableView->setColumnWidth (1,1);
        ui->tableView->setColumnWidth (1,200);
        ui->tableView->setColumnWidth (2,90);
        ui->tableView->setColumnWidth (3,340);
        ui->tableView->setWordWrap (true);
    }
    
    void MainWindow::connection()
    {
    
        connectionNames = db.connectionNames ();
    
        if((connectionNames.contains ("Display")) == false)
            {
                db = QSqlDatabase::addDatabase ("QSQLITE","Display");
                db.setDatabaseName (fileQstring);
                qDebug() << "Connection Display created in connection(). ";
            }
    }
    
    void MainWindow::on_actionAdd_a_Friend_triggered()
    {
        Additem *mAddItem = new Additem;
        mAddItem->exec ();
    }
    
    
    void MainWindow::on_tableView_clicked(const QModelIndex &index)
    {
    	int row = index.row ();
        int column = index.column ();
        qDebug() << "Index: " << "(" << row <<"," << column << ")";
    
        if(column == 2)
        {
    	query_main.value(row);
        }
    }
    I want an option where the user can click on the 2nd column which is a picture and enlarge it. How can I get the pixmap from smodel and display it in tableView_clicked?
    Thank you.
    
    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2
      if(column == 2)
          {
             QPixmap imageToEnlarge = index.data(Qt::DecorationRole).value<QPixmap>();
      	
          }
      

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      1

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved