QTabWidget : mise à jour du contenu d'un onglet
Bonjour à tous,
Mon application est constituée d'une fenêtre principale, formée d'un QTabWidget à plusieurs onglets (normal ^^). L'application vise à lire et écrire dans une base de données SQLite (constituée d'un simple fichier) qui contient ma collection de disques :)
Dans mon onglet d'accueil, j'affiche le nombre d'éléments contenus dans ma base. Pour cela, j'utilise une requête de type SELECT COUNT et j'affiche le résultat avec un QLCDNumber.
Voici le code de création de l'onglet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
MyWelcomeTab::MyWelcomeTab() : QWidget()
{
// Comptage du nbr de disques
int nbrDisques = MySQL_elementsCount("elements"); // fonction perso OK
if(nbrDisques < 0)
{
QMessageBox::critical(\
this,\
tr("Erreur SQL"),\
tr("Il a ete impossible de compter le nombre d'element dans la base de donnees. Le fonctionnement pourrait s'en trouver corrompu"));
}
// Creation des objets
LCDNombreDisques = new QLCDNumber;
LCDNombreDisques->setSegmentStyle(QLCDNumber::Flat);
LCDNombreDisques->display(nbrDisques);
QLabel *texteNombreDisques = new QLabel;
texteNombreDisques->setText("Nombre de disques dans la base :");
// Positionnement dans un layout
QGridLayout *layoutWelcomeTab = new QGridLayout;
layoutWelcomeTab->addWidget(LCDNombreDisques,0,1);
layoutWelcomeTab->addWidget(texteNombreDisques,0,0);
this->setLayout(layoutWelcomeTab);
}//MyWelcomeTab() |
Ça marche très bien au lancement. Le problème vient du fait que ce nombre n'est pas mis à jour au cours de l'exécution du programme. Si mon programme démarre avec 10 entrées en base, que j'ajoute 2 disques via l'onglet d'ajout à la base, que je reviens à l'onglet d'accueil, et bien il affiche toujours 10. C'est assez logique, mais moi je voudrais qu'il recalcule la donnée.
Je sais qu'en Matlab, il existe une fonction redraw qui permet de rafraichir une fenêtre, ce qui inclut de recalculer les variables la constituant. Existe t-il une telle fonction en Qt ? Comment faire ?
Merci pour vos idées :ccool: