[C++/QT] QTableView (refresh)

0

Witam

mam mały problem nad którym siedzę od wczoraj wieczór
mam coś takiego:

do wyświetlania :

void MainWindow::display()
{
    QSqlQueryModel *model=new QSqlQueryModel(ui->tableView);
    model->setQuery(dotabelki);
    if(model->lastError().type() != QSqlError::NoError)
    {
        QString error=model->lastError().text();
        QMessageBox::information(0,"uwaga uwaga",error);
    }
    else
        ui->tableView->setModel(model);
   
}

do zapisywania:

void MainWindow::Fwstaw(QSqlQuery wstaw)
{
    QSqlQuery queryUser;
    QString userQuery="select iduser from user where imie = '";
    userQuery.append(INuser);
    userQuery.append("'");
    queryUser.exec(userQuery);
    queryUser.next();
   
    QSqlQuery queryProd;
    QString prodQuery="select idprodukt from produkt where nazwa = '";
    prodQuery.append(INprodukt);
    prodQuery.append(" '");
    queryProd.exec(prodQuery);
    queryProd.next();
   
    wstaw.prepare("insert into trans (data, cena, ilosc, produkt_id, user_id) values "
                  "(:data, :cena, :ilosc, :produkt_id, :user_id);");
    wstaw.bindValue(":data",data);
    wstaw.bindValue(":cena", ui->cenaDoubleSpinBox->value());
    wstaw.bindValue(":ilosc",ui->iloscSpinBox->value());
    wstaw.bindValue(":produkt_id",queryProd.value(0).toInt());
    wstaw.bindValue(":user_id",queryUser.value(0).toInt());
    wstaw.exec();

    QString errrr=wstaw.lastError().text();
           qDebug() << errrr ;

}

wszystko działa, a mój problem polega na tym że nijak nie mogę odświeżyć widoku tabelki .
Czy jest jakiś bezbolesny sposób?

Chodzi mi o odświeżenie po zapisaniu nowych danych do bazy lub po zmianie kwerendy.


**
*
_

0

Zrób sobie metodę powiedzmy "odswiezQueryModel" w której będziesz konstruował zapytanie po czy go wykonasz i podepniesz wynik do modelu:)

void ???::odswiezQueryModel( void )
{
    QSqlQuery query( *sql_db );
    query.prepare( "???" );
    query.exec();

    table_model->setQuery( query );
}

gdzie:
QSqlQueryModel table_model;

0

dzięki za podpowiedź, wypróbuję wieczorem :)

0

DZIĘKI DZIĘKI [browar]

już działa, a nie działało bo poprawnie powinno być:

void MainWindow::display()
{
    model=new QSqlQueryModel(ui->tableView); //było QSqlQueryModel model=... no i wywalało
    model->setQuery(dotabelki);
    if(model->lastError().type() != QSqlError::NoError)
    {
        QString error=model->lastError().text();
        QMessageBox::information(0,"uwaga uwaga",error);
    }
    else
        ui->tableView->setModel(model);
    
}

a odświerzenia załatwia kod:

QSqlQuery query(dotabelki);
    query.exec();
    model->setQuery(query);

1 użytkowników online, w tym zalogowanych: 0, gości: 1