2011-02-17 2 views
1

약간의 Symbian 앱을 작성 중이며 QDataWidgetMapper에 문제가 있습니다. 나는 몇 가지 테스트 행로 데이터베이스를 채우는되기 전에Qt 4 Sqlite, 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 (항목);이 코드입니다

올바른 데이터를 보여주세요. 그러나 매핑이 실패합니다.

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

여기 그것은 DatabaseManager 생성자입니다 : :이 getTableModel은 매우 간단하다 insertTestExspense 작동하기 때문에, 내가 문제가 설정 가능()에있을 수 있습니다 생각

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

} 

...하지만 난 할 수 내가 무엇을 놓치고 있는지 보지 마라.

어떤 생각? 당신이 그것을 작동하도록 할 수있는 일의

답변

3

커플 :

1.Check fieldIndex("item") 실제로 유효한 필드 인덱스를 반환합니다. QLabel 매핑 2.For

또한 DataManager에의 addMapping 호출에 대해 text 속성 이름을 지정 :이 도움이

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

희망, 그것은 일

+0

간주한다. 하지만 "텍스트"매개 변수를 지정해야하는 이유는 무엇입니까? 설명서는 http://doc.qt.nokia.com/latest/qdatawidgetmapper.html#addMapping-2 여기에 약간의 설명이 없습니다. "사용할 속성을 지정할 가능성을 추가합니다."... 그러나 개체의 속성은 무엇입니까? – Segolas

+0

addMapping에서는 위젯과 모델 섹션 간의 매핑을 지정할 수 있습니다. PropertyName 매개 변수는 매핑에 사용되어야하는 위젯의 속성을 정의 할 수 있습니다. –

+0

ok, 다시 한 번 감사드립니다. – Segolas