Bonjour,

je voudrais remplir un QtableWidget (et non une QTableView) en utilisant QConcurrent.
J'arrive à mes fins mais j'ai dû ajouter dans mon main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    qRegisterMetaType<QVector<int> >("QVector<int>");
    qRegisterMetaType<QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>");
    qRegisterMetaType<QItemSelection>("QItemSelection");
    qRegisterMetaType<QAbstractItemModel::LayoutChangeHint>("QAbstractItemModel::LayoutChangeHint");
sans trop comprendre quel est exactement le problème.

Cependant, j'ai lu plusieurs fois que piloter des éléments graphiques de la fenêtre (QTableWidget en est un) à partir d'un code appelé par le thread était "malsain" ?
Donc, existe-t-il une approche "recommandable" pour utiliser une requête SQL dans un thread secondaire ? Est-ce compatible avec le remplissage d'un QTableWidget de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
          ui->table->setUpdatesEnabled( false ) ;
          ui->table->setRowCount(query.size());
 
          int index=0;
          while (query.next())
          {
              ui->table->setItem(index,0,new QTableWidgetItem(query.value(0).toString()));
              ui->table->setItem(index,1,new QTableWidgetItem(query.value(1).toString()));
              ui->table->setItem(index,2,new QTableWidgetItem(query.value(2).toString() + " " + query.value(3).toString()));
              ui->table->setItem(index,3,new QTableWidgetItem(query.value(4).toString()));
              index++;
               if (bfutureStop == true) return;
          }
 
 
        //Lancer le tri par défaut
          sortCol = 2;
          sortOrder = Qt::AscendingOrder;
          ui->table->sortByColumn(3, sortOrder);
          ui->table->sortByColumn(2, sortOrder);
 
       //Select First Row
          ui->table->selectRow(0);
          ui->table->setUpdatesEnabled( true ) ;
Merci.