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. QSqlTableModel access trought object name
Forum Updated to NodeBB v4.3 + New Features

QSqlTableModel access trought object name

Scheduled Pinned Locked Moved Unsolved General and Desktop
4 Posts 2 Posters 241 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.
  • gfxxG Offline
    gfxxG Offline
    gfxx
    wrote on last edited by gfxx
    #1

    I would like to use about 20 QSqlTableModels in my code... I need to call them in different places from gui actions... so I declared the QSqlTableModels in my mainwindows.h file, initialize them in mainwindows.cpp and later call them with the setobjectname method.... but the app work perfect only first time .... did I misunderstand something?

    my mainwindows.h file:

    private:
        Ui::MainWindow *ui;
        Login *m_login;
        QSqlTableModel *model;
        QSqlTableModel *model_1;
        QSqlTableModel *model_2;
        QSqlTableModel *modelT_1;
        QSqlTableModel *modelT_2;
        QSqlTableModel * stkSqlViewLb;
    

    mainwindows.cpp:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
    
        model_1 = new QSqlTableModel(this, QSqlDatabase::database("db"));
        model_2 = new QSqlTableModel(this, QSqlDatabase::database("db"));
        modelT_1 = new QSqlTableModel(this, QSqlDatabase::database("db"));
        modelT_2 = new QSqlTableModel(this, QSqlDatabase::database("db"));
    stkSqlViewLb = new QSqlTableModel(this, QSqlDatabase::database("db"));
    

    my call test :

    void MainWindow::sqlView(){
        QObject* shSqlView = sender();
        QString nSqlView = shSqlView->objectName();
        nSqlView.remove("pbtn_test_");
        int valSqlView = nSqlView.toInt();
        QString chSqlView = "tableView_O_" + QString::number(valSqlView);
        QTableView * stkSqlView = this->findChild<QTableView *>(chSqlView);
    
         switch (valSqlView) {
            case 1:
                stkSqlViewLb = model_1;
                break;
            case 2:
                stkSqlViewLb = model_2;
                break;
            default:
                break;
            }
        stkSqlViewLb->setTable("testTable");
    
    

    what is my error? What not understand?
    Appreciate any help ...

    regards

    bkt

    JonBJ 1 Reply Last reply
    0
    • gfxxG gfxx

      I would like to use about 20 QSqlTableModels in my code... I need to call them in different places from gui actions... so I declared the QSqlTableModels in my mainwindows.h file, initialize them in mainwindows.cpp and later call them with the setobjectname method.... but the app work perfect only first time .... did I misunderstand something?

      my mainwindows.h file:

      private:
          Ui::MainWindow *ui;
          Login *m_login;
          QSqlTableModel *model;
          QSqlTableModel *model_1;
          QSqlTableModel *model_2;
          QSqlTableModel *modelT_1;
          QSqlTableModel *modelT_2;
          QSqlTableModel * stkSqlViewLb;
      

      mainwindows.cpp:

      MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
      
          model_1 = new QSqlTableModel(this, QSqlDatabase::database("db"));
          model_2 = new QSqlTableModel(this, QSqlDatabase::database("db"));
          modelT_1 = new QSqlTableModel(this, QSqlDatabase::database("db"));
          modelT_2 = new QSqlTableModel(this, QSqlDatabase::database("db"));
      stkSqlViewLb = new QSqlTableModel(this, QSqlDatabase::database("db"));
      

      my call test :

      void MainWindow::sqlView(){
          QObject* shSqlView = sender();
          QString nSqlView = shSqlView->objectName();
          nSqlView.remove("pbtn_test_");
          int valSqlView = nSqlView.toInt();
          QString chSqlView = "tableView_O_" + QString::number(valSqlView);
          QTableView * stkSqlView = this->findChild<QTableView *>(chSqlView);
      
           switch (valSqlView) {
              case 1:
                  stkSqlViewLb = model_1;
                  break;
              case 2:
                  stkSqlViewLb = model_2;
                  break;
              default:
                  break;
              }
          stkSqlViewLb->setTable("testTable");
      
      

      what is my error? What not understand?
      Appreciate any help ...

      regards

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #2

      @gfxx
      If you say it crashes what is the stack trace in a debugger? Maybe shSqlView is nullptr, how do we know? Maybe stkSqlView is nullptr? stkSqlViewLb is an uninitialized variable. The last part of your code does not seem related to the first part.

      First use a debugger, then post a minimal example.

      gfxxG 2 Replies Last reply
      1
      • JonBJ JonB

        @gfxx
        If you say it crashes what is the stack trace in a debugger? Maybe shSqlView is nullptr, how do we know? Maybe stkSqlView is nullptr? stkSqlViewLb is an uninitialized variable. The last part of your code does not seem related to the first part.

        First use a debugger, then post a minimal example.

        gfxxG Offline
        gfxxG Offline
        gfxx
        wrote on last edited by
        #3

        @JonB correct ... forget a row .... problem was need to use model_2, model_1 etc in a lot of void so need to call them as per objectname .... tomorrow try with debugger ....

        bkt

        1 Reply Last reply
        0
        • JonBJ JonB

          @gfxx
          If you say it crashes what is the stack trace in a debugger? Maybe shSqlView is nullptr, how do we know? Maybe stkSqlView is nullptr? stkSqlViewLb is an uninitialized variable. The last part of your code does not seem related to the first part.

          First use a debugger, then post a minimal example.

          gfxxG Offline
          gfxxG Offline
          gfxx
          wrote on last edited by gfxx
          #4

          @JonB ok found my code (I update the example) is correct if inizialize all QSqlTableModel ...... problem: because need change QSqlTableModel every gui action not find a way to write correctly ....

          stkSqlViewLb = model_2;
          

          in sqlView void I try to tranform stkSqlViewLb to declared QSqlTableModel or "model_1", "model_2" etc etc ... these because I would use a model every tableView ....

          Actually with revised code all work perfect only to a first call of sqlView .... after can see only white tableView .... think because QSqlTableModel not match.

          bkt

          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