Qt 4 Sqlite, проблема с QDataWidgetMapper - PullRequest
1 голос
/ 17 февраля 2011

Я пишу небольшое приложение для Symbian и у меня проблемы с QDataWidgetMapper. Это код:

void Widget::bindToData(){
    databaseManager = new DatabaseManager();
    dataMapper = new QDataWidgetMapper();
    dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
    dataMapper->setModel(databaseManager->getTableModel());
    dataMapper->addMapping(ui->debugLabel, databaseManager->getTableModel()->fieldIndex("item")); //ko
    QSqlQuery q;
    bool ret = q.exec("SELECT * FROM expense");

    if (!ret){
        databaseManager->showDebugMsg(q.lastError().text());
    }
    while (q.next()) {
        QString item = q.value(1).toString();
        databaseManager->showDebugMsg(item); //ok
    }

    dataMapper->toFirst();


}

До того, как я заполнил базу данных какой-нибудь тестовой строкой, и я уверен, что она работала, потому что

databaseManager-> showDebugMsg (пункт);

покажи мне правильные данные. Но сопоставление не удается. GetTableModel довольно прост:

QSqlTableModel *  DatabaseManager::getTableModel(){
    tableModel->select();
    return tableModel;
}

и вот он - конструктор DatabaseManager:

DatabaseManager::DatabaseManager(){
    debugMsgBox = new QMessageBox();
    this->deleteDB();
    this->openDB();
    this->createExpenseTable();
    this->insertTestExpense("test", 11.0);
    tableModel = new QSqlTableModel();
    tableModel->setTable("expense");

}

Поскольку insertTestExspense работает, я думаю, что проблема может быть в setTable () ... но я не вижу, что мне не хватает ...

Есть идеи?

1 Ответ

3 голосов
/ 18 февраля 2011

Несколько вещей, которые вы можете сделать, чтобы заставить его работать:

1. Проверьте, действительно ли fieldIndex("item") возвращает действительный индекс поля.

2. Для отображения QLabel также укажите text имя свойства для вызова addMapping менеджера данных:

dataMapper->addMapping(ui->debugLabel, databaseManager->getTableModel()>fieldIndex("item"), "text");

надеюсь, это поможет, с уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...