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. Looping through query results and displaying in tableview
Forum Updated to NodeBB v4.3 + New Features

Looping through query results and displaying in tableview

Scheduled Pinned Locked Moved Solved General and Desktop
querytableview table
3 Posts 2 Posters 2.1k 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 3 Jan 2016, 04:53 last edited by
    #1

    Hi,
    My intention is to use the following code to read all the data from the database and list them in tableview. ```
    //your code #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    QSqlDatabase db;
           db = QSqlDatabase::addDatabase ("QSQLITE");
           db.setDatabaseName ("C:/Programming/Qtsamples/Image_from_db_to_Table/db.db");
    
           if(!db.open ())
           {
               qDebug() << "The database is NOT open!";
           }
           else
           {
               qDebug() << "The database is open!";
           }
    
           QSqlQuery query("SELECT * FROM Items ");
    
    
           if(query.isActive()==true)
             {
                 qDebug() << "The query is active.";
             }
             else
             {
                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);
    
    while(query.next ())
    {
    
                    QStandardItem *Item = new QStandardItem();
                    QStandardItem *Item2 = new QStandardItem();
    
                    Item->setData (ID = query.value (0).toInt (),Qt::DisplayRole);
                    qDebug() << "ID = " <<   ID;
                    smodel->setItem (0,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 (0,1,Item2);
                    ui->tableView->;
    
            }
    
    				ui->tableView->resizeColumnsToContents ();
    				ui->tableView->resizeRowsToContents ();
          			ui->tableView->horizontalHeader ()->setStyleSheet ("QHeaderView{font: 14pt Arial; color: blue; font-weight: bold;}");
    
          smodel->setHeaderData (0,Qt::Horizontal, QObject::tr ("ID"));
    
          smodel->setHeaderData (1,Qt::Horizontal, QObject::tr ("Picture"));
    
    	db.close ();
    

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }

    The code only lists the first item in the database. Please help me to find what I did wrong. Thank you.
    1 Reply Last reply
    0
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 3 Jan 2016, 11:14 last edited by mrjj 1 Mar 2016, 11:16
      #2

      @gabor53 said:
      Well the query seems fine.
      But one thing I did wonder;

      smodel->setItem (0, 0, Item);
      smodel->setItem (0, 1, Item2);
      

      You inset as same row ? (0)
      I imagine something like

      int row=0
      while(query.next ()) {
      ...
      smodel->setItem (row, 0, Item);
      smodel->setItem (row++, 1, Item2);
      ...
      

      Also for viewing, there is also
      http://doc.qt.io/qt-5.5/qsqlquerymodel.html#details

      1 Reply Last reply
      0
      • G Offline
        G Offline
        gabor53
        wrote on 4 Jan 2016, 04:22 last edited by
        #3

        Thank you. It worked.

        1 Reply Last reply
        0

        1/3

        3 Jan 2016, 04:53

        • Login

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