У меня есть QTableView
вместе с кнопкой обновления и некоторыми другими кнопками, как показано ниже:QTableView не обновляется, когда функция обновления вызывается из другого класса
У меня есть функция, которая обновить таблицу. Когда кнопка обновления нажата, вызывается функция. Код для функции приведен ниже.
void client_table_view::refreshTable()
{
dbconnector db;
QSqlQueryModel* modal = new QSqlQueryModel();
QSqlQuery* qry = new QSqlQuery(db.digi_db) ;
qry->exec("select client_id,company_name,contact_name,address,email,phone from client_details");
modal->setQuery(*qry);
ui->client_table->setModel(modal);
for (int c = 0; c < ui->client_table->horizontalHeader()->count(); ++c)
{
ui->client_table->horizontalHeader()->setSectionResizeMode(
c, QHeaderView::Stretch);
}
ui->client_table->setSelectionBehavior(QAbstractItemView::SelectRows);//select the whole row instead of individual cell
ui->client_table->setShowGrid(true);
ui->client_table->setColumnHidden(0,true);
qDebug()<<"Table Refreshed";
}
При нажатии на кнопку редактирования щелкнул диалоговое окно появляется, как указано ниже, который может быть использован для редактирования любой строки в таблице.
Когда кнопка сохранения нажата я называю ту же кнопку обновления в конце, чтобы обновить таблицу, но она не обновляет таблицу. Функция вызывается, но таблица не обновляется. Код, который вызывается при нажатии кнопки сохранения, приведен ниже.
void client_details::on_pushButton_2_clicked()
{
dbconnector db;
QString company_name,contact_name,country,address,city,state,email,phone,website,tin;
company_name = ui->company_name->text();
contact_name = ui->contact_name->text();
country = ui->countrycombobox->currentText();
address = ui->address->toPlainText();
city = ui->city->text();
state = ui->state->text();
email = ui->email->text();
phone = ui->phone->text();
website = ui->website->text();
tin = ui->tin->text();
if(window_title=="Edit Info"){
//qDebug()<<window_title;
db.updateClient(company_name,country,contact_name,address,city,state,email,phone,website,tin,current_client_id);
}
else if(window_title=="Add Client"){
db.insertIntoClient(company_name,country,contact_name,address,city,state,email,phone,website,tin);
}
QMessageBox::information(
this,
tr("Saved"),
tr("Information has been saved."));
client_table_view ctv;
ctv.refreshTable(); //call refresh function to refresh table view
this->close();
}
Вы вставив отредактированные значения обратно в базу данных? –
@lbarros да. при нажатии кнопки сохранения значения сохраняются в базе данных. Сразу после этого я вызываю функцию refresh table. Он работает, но таблица не обновляется. –
Если вы снова обновляете таблицу, отображаются ли новые значения правильно? –