QSqlTableModel/QTableView : table vide avec une compilation release
Bonjour à tous,
je commence un peu à désespérer face à un comportement assez étrange depuis quelque jours sur une de mes pages. Je souhaite afficher le contenu d'une table MySQL dans un QTableView en utilisant un QSqlTableModel, rien de bien extraordinaire.
Le souci c'est que ca fonctionne très bien avec une compilation debug, la table se remplis correctement. Une fois compilée en release la table reste désespérément.
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 29 30
|
FormGestionTarif::FormGestionTarif(QWidget *parent) :
QDialog(parent),
ui(new Ui::FormGestionTarif)
{
ui->setupUi(this);
db = QSqlDatabase::database();
model = new QSqlTableModel();
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->setTable("histo_tarifs");
model->select();
model->setHeaderData(2,Qt::Horizontal,"Désignation");
model->setHeaderData(3,Qt::Horizontal,"Durée");
model->setHeaderData(4,Qt::Horizontal,"Unitée");
model->setHeaderData(5,Qt::Horizontal,"Prix HT");
ui->tvTarif->hideColumn(0); // on cache les colonne inutile
ui->tvTarif->hideColumn(1);
QSqlQuery qrTarif;
qrTarif.exec("select designation from tarifs order by designation");
ui->cbDesignation->clear();
while(qrTarif.next())
ui->cbDesignation->addItem(qrTarif.value(0).toString());
ui->tvTarif->setModel(model);
} |
Je précise que le model contient exactement le bon nombre d'enregistrement et que les autres tables s'affichent correctement.
De plus cette boucle fonctionne correctement en release mais le programme crash avec une compilation debug (pas de chance c'est le contraire ^^) avec ce message ASSERT: "idx >= 0 && idx < s" in file ../../include/QtCore/../../src/corelib/tools/qvarlengtharray.h, line 110
Code:
1 2 3 4
|
qrTarif.exec("select designation from tarifs order by designation");
while(qrTarif.next())
ui->cbDesignation->addItem(qrTarif.value(0).toString()); |
Voici la structure de la table chargée dans le QTableView:
Code:
1 2 3 4 5 6 7 8 9
|
`id` INT(10) NOT NULL AUTO_INCREMENT,
`id_tarif` INT(10) NULL DEFAULT NULL,
`duree` FLOAT NULL DEFAULT '0',
`unite_duree` CHAR(1) NULL DEFAULT '0',
`prix_ht` FLOAT NULL DEFAULT '0',
`id_TVA` INT(1) NULL DEFAULT '0',
`dateheuredb` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`dateheurefn` TIMESTAMP NULL DEFAULT NULL |
Et celle de la table chargée dans la boucle:
Code:
1 2 3
|
`id` INT(10) NOT NULL AUTO_INCREMENT,
`designation` VARCHAR(50) NULL DEFAULT '0' |
Toute les idées sont bonnes à prendre ^^