#include <QMessageBox>
#include <QTableView>
#include <QSqlRelationalDelegate>
#include <QDataWidgetMapper>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "testdata");
    db.setDatabaseName("test;");
    if(!db.open())
    {
        QMessageBox::critical(0,QObject::tr("database error"),db.lastError().text());
    }
    QSqlTableModel* mode = new QSqlTableModel(0,db);
    mode->setTable("sudent");
    QTableView* view = new 
QTableView;
    mode->select();
    view->setModel(mode); 
    MainWindow w;
    w.setCentralWidget(view);
    w.show();
    return a.exec();
}
可以显示如图 
 
 可是把
QSqlTableModel* mode = new QSqlTableModel(0,db);
换成:
QSqlTableModel* mode = new QSqlTableModel;
就显示不出来了
这是为什么啊
QSqlTableModel构造函数不是会传递默认的
数据库连接的嘛
[ 此帖被tangxunmin在2010-09-11 15:10重新编辑 ]