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
QtWS25 Last Chance

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
  • 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,
    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
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #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 last edited by
        #3

        Thank you. It worked.

        1 Reply Last reply
        0

        • Login

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