onjour,

J'ai un petit probleme avec QTableView, je vous montre d'abord le code

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
25
26
27
28
29
30
31
32
33
34
35
36
 
 
    QSettings settings("../conf.ini", QSettings::IniFormat);
 
    QString hostname = settings.value("hostname", "localhost").toString();
    int port = settings.value("port", 3306).toInt();
    QString user = settings.value("user", "root").toString();
    QString password = settings.value("password", "passwd").toString();
    QString dbname = settings.value("dbname", "report").toString();
 
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(hostname);
    db.setPort(port);
    db.setUserName(user);
    db.setPassword(password);
    db.setDatabaseName(dbname);
 
    if (!db.open())  {
        QMessageBox::critical(this, QObject::tr("Database Error"), db.lastError().text());
        return;
    }
    else {
        ui->statusBar->showMessage("Connected to database: " + dbname);
    }
 
 
    // _Models et _Views étant respectivement des QMap<QString, QSqlTableModel> et  QMap<QString, QTableView> 
 
    _Models.insert("report", new QSqlTableModel(this,db));
    _Models["report"]->setTable("report");
    _Models["report"]->setEditStrategy(QSqlTableModel::OnFieldChange);
    _Models["report"]->select();
 
    _Views.insert("report", new QTableView);
    _Views["report"]->setModel(_Models["report"]);
    ui->tabWidget->insertTab(0,_Views["report"],QIcon(),"report");
Maintenant j'explique mon probléme:
Tout s'affiche bien dans ma vue. Mais quelque fois je ne sais pas pourquoi, mais quand je fait une modification sur un item (je change la valeur) et quand que je valide par la touche "entrée" ou en "cliquant" sur un autre item alors la valeur ne se change pas, de plus lorsque ce phénoméne apparait plus moyen de modifier aucun item.

Par contre si je relance l'appli ca refonctionne. Je comprend pas au debut ca marche et apres ca marche plus.

Si quelqu'un pouvait m'aider, merci