Esto está mejor :)
[quote author="diego79" date="1417082208"]aqui hay un error que no comprendo
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Se ha conectado a la base de datos[/quote]
Quízás sea por que usa la "conexión por defecto", crea la conexión añadiéndole un nombre:
@ midb1=QSqlDatabase::addDatabase("QSQLITE", "conexion_db");
@
Dale el nombre que prefieras :P
[quote author="diego79" date="1417082083"]
@ QSqlQuery query("select codigo,detalle from producto");
while(query.next())
{
QSqlTableModel *model = new QSqlTableModel(this, midb1);
model->setTable("producto");@
[/quote]
No necesitas crear un QSqlQuery para el modelo, el modelo ya se encarga de traer los datos. Mueve la creación del puntero al modelo al archivo de cabecera, por si lo necesitas en otra parte del código.
[quote author="diego79" date="1417082083"]
@
ui->tableView->show();@
[/quote]
Esto tampoco lo necesitas, ¿El QTableView lo has puesto en el formulario no? No necesitas mostrarlo, ya se muestra el solito :P
Por cierto, te vuelvo a preguntar ¿La base de datos contiene datos? Si no tiene nada, pues nada te va a mostrar, por muchas vueltas que le des.
Saludos