W programie mam 2 zakładki klasy QTabWidget
W zakładce pierwszej tej po starcie programu mam obiekt klasy QTableView
który jest składnikiem klasy MainWindow
wyświetla pobrane rekordy z bazy i wygląda to tak
poniżej kod
StrQuery1 = "SELECT pStatus_zamowienia FROM tZamowienia2 WHERE pStatus_zamowienia = 'Nowe zamówienie'"
" "
"OR"
" "
"pStatus_zamowienia = 'W realizacji'"
" "
"OR"
" "
"pStatus_zamowienia is NULL";
SqlQuery1 = new QSqlQuery(StrQuery1, *connect);
SqlQuery1->exec();
MyModel = new MySqlQueryModel();
MyModel->setQuery(*SqlQuery1);
TblView1->setModel(MyModel);
TblView1->setAlternatingRowColors(true);
W druga zakładka też jest składnikiem klasy MainWindow
i zapytanie mam podobne do poprzedniego, tylko różni się klauzulą WHERE
StrQuery2 = "SELECT"
" "
"pStatus_zamowienia"
" "
"FROM"
" "
"tZamowienia2"
" "
"WHERE"
" "
"pStatus_zamowienia = 'Zrealizowane'";
SqlQuery2 = new QSqlQuery(StrQuery2, *connect);
SqlQuery2->exec();
SqlModel = new QSqlQueryModel();
SqlModel->setQuery(*SqlQuery2);
TblView2->setModel(SqlModel);
TblView2->setAlternatingRowColors(true);
napisałem sobie slota który jest składnikiem klasy MySqlQueryModel
. Zadaniem tego slota jest odświeżanie danych zawartych w drugiej zakładce
i wygląda on tak
void MySqlQueryModel::refreshTab(int tab)
{
if(tab==1){
setQuery("SELECT"
" "
"pStatus_zamowienia"
" "
"FROM"
" "
"tZamowienia2"
" "
"WHERE"
" "
"pStatus_zamowienia = 'Zrealizowane'");
setHeaderData(6,Qt::Horizontal,QVariant(QString(QObject::tr("Status zamówienia"))),Qt::EditRole);
qDebug()<<"odświeżam" << tab;
}
}
a tak wygląda podłączenie tego slota w klasie MAinWindow
QObject::connect(mainTabWidget, &QTabWidget::currentChanged, MyModel, &MySqlQueryModel::refreshTab);
Przy przełączaniu się między zakładkami slot działa, co widać po komunikatach z qDebug
który umieściłem w tym slocie ale problem jest taki, że zapytanie o wczytanie danych w ogóle nie działa, natomiast jak dodałem warunek if
dla zakładki 0 (zero) to slot wykonywał się poprawnie i wczytywał dane z bazy.
Pytanie mam takie, dlaczego ten slot nie wczytuje danych dla zakładki drugiej ? (taby numerowane są od zera)