Hola @Casino
Voy a ver si te doy algunas recomendaciones según lo que yo hago y así vamos buscando el problema.
Inicializar la base de datos yo lo hago en el main, antes de abir la ventana principal, así, si no se puede abrir, puedes mostrar un mensaje y salir del programa. Además, como lo tienes, cada vez que abres el diálogo Ciegas estás creando una conexión con la base de datos, haciéndolo en el main solo tendrás una conexión.
Además, para abrir la conexión de doy un nombre a ésta, así es fácil usarla después:
db_main = QSqlDatabase::addDatabase("QSQLITE", "nombre_de_la_conexion");
Y las tablas tendrás que crearlas cuando abres la base de datos en main.
Luego, para referirse a ella en el diálogo Ciegas, usas:
db_main = QSqlDatabase::database("nombre_de_la_conexion");
y luego, cuando uses una query pásale la conexión:
QSqlQuery crear(db_main);
A la hora de preparar las querys yo lo haría aprobechando las facilidades que te da Qt:
QSqlQuery insertar(main_db);
insertar.prepare("INSERT INTO Ciegas1(eid, sblind, bblind .....) VALUES (:eid, :sblind, :bblind .....)");
insertar.bindValue(":eid", ui->eid1->text().toInt()); // tienes que pasarle enteros!!
insertar.bindValue(":sblind", ui->sblind1->text().toInt());
insertar.bindValue(":bblind", ui->bblind1->text().toInt());
......
if(insertar.exec()){
qDebug()<<"La CIEGA se ha insertado";
}else{
qDebug()<<"La CIEGA NO se ha insertado";
qDebug()<<"ERROR!"<<insertar.lastError();
}
Normalmente si hay algún error suele mostrar un mensaje en la consola. Intenta aplicar algunos cambios a ver, luego intentaré darle un repaso mas a fondo a ver si encuentro algún problema.
PD:
Revisando la parte de actualizar me di cuenta de una cosa, los campos de la base de datos son de tipo INTEGER, así que cuando haces bindValue tienes que pasarle un entero, y le estás pasando un String (que es lo que devuelve text()))
Esta consulta la tienes incorrecta, es decir, al crear la consulta ya le estás pasando el valor de cada campo, por lo que no tienes que llamar a bindValue después:
actualizar.prepare("UPDATE Ciegas1 SET eid= '"+ei+"', sblind= '"+sb+"', bblind= '"+bb+"', ante= '"+an+"', time= '"+ti+"', break= '"+br+"' WHERE eid = '"+ei+"' " );
actualizar.bindValue(":eid",ui->eid1->text());
actualizar.bindValue(":sblind",ui->sblind1->text());
modifícala como te puse arriba a ver si no te da error, y pásale un entero, no un String.
Un saludo