From 10:00 CET Friday 22nd November we will adjust how the server works to deal with some recently reported problems. Therefore there may be a load problem, if you experience more problems than usual trying to access the forum then please PM AndyS or any of the moderators so they can inform me.

Reading a value from tableView

  • Hi,
    I have the following code to display data from a database to tableView:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    MainWindow::MainWindow(QWidget *parent) :
        ui(new Ui::MainWindow)
               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 * FROM Items ");
                     qDebug() << "The query is active.";
                    qDebug() << "The query is NOT active.";
               QSqlQuery query2 ("SELECT Count(*) FROM Items");
     			int count;
               query2.first ();
                count = query2.value (0).toInt ();
    			qDebug() << "The number of rows: " << count;
    			//query.first ();
                QStandardItemModel *smodel = new QStandardItemModel;
                int ID;
    			ui->tableView->setModel (smodel);
                      	int row = 0;
                        while( ())
                		QStandardItem *Item = new QStandardItem();
                        QStandardItem *Item2 = new QStandardItem();
                        Item->setData (ID = query.value (0).toInt (),Qt::DisplayRole);
                        qDebug() << "ID = " <<   ID;
                        smodel->setItem (row,0,Item);
                        QByteArray ByteArray;
                        ByteArray = query.value (1).toByteArray ();
                        QPixmap Pixmap;
                        Pixmap.loadFromData (ByteArray);
                        Pixmap = Pixmap.scaled (100,100,Qt::KeepAspectRatio);
                        Item2->setData (QVariant(Pixmap),Qt::DecorationRole);
                        smodel->setItem (row++,1,Item2);
      					ui->tableView->resizeColumnsToContents ();
       					ui->tableView->resizeRowsToContents ();
              			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: cyan; background-color: white;");
                        ui->tableView->setEditTriggers (QAbstractItemView::NoEditTriggers);
              smodel->setHeaderData (0,Qt::Horizontal, QObject::tr ("ID"));
              smodel->setHeaderData (1,Qt::Horizontal, QObject::tr ("Picture"));
       		db.close ();
        delete ui;
    void MainWindow::on_tableView_doubleClicked(const QModelIndex &index)
       ui->tableView->setCurrentIndex (index);
       qDebug() << "Index: " << index;
       int r = index.row();
       int c = index.column ();
       qDebug() << "Row: " << r;
       qDebug() << "Column: " << c;

    After double clicking on a row, I want to read the value from column 0 (ID). I managed to get the row and column numbers but not the value. Please help me to read the value.
    Thank you.

  • @gabor53
    Something like this

    QModelIndex index = model->index(row, col, QModelIndex());



  • Thank you. It worked!