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
sans trop comprendre quel est exactement le problème.
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");
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 :
Merci.
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 ) ;
Partager