QSqlTableModel access trought object name
-
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
-
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
@gfxx
If you say it crashes what is the stack trace in a debugger? MaybeshSqlView
isnullptr
, how do we know? MaybestkSqlView
isnullptr
?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.
-
@gfxx
If you say it crashes what is the stack trace in a debugger? MaybeshSqlView
isnullptr
, how do we know? MaybestkSqlView
isnullptr
?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.
-
@gfxx
If you say it crashes what is the stack trace in a debugger? MaybeshSqlView
isnullptr
, how do we know? MaybestkSqlView
isnullptr
?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.
@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.