嗯,按版主的代码好像写入到数据库里的只是一个1。数据不全。当然就显示不出来了。
找到一个老外的demo.是可以用的。
void Dialog::beforeInsertFoto(QSqlRecord &record)
{
//prepare data dor id - generated key
record.setValue("id", generateId("foto"));
//prepare data for name - get it form the label in the ui
record.setValue("name", ui->fileNameLabel->text());
//prepare data for image - get it from the label in the ui
QImage currentImage = ui->foto->pixmap()->toImage();
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
currentImage.save(&buffer, "PNG");
record.setValue("image", bytes);
}
void Dialog::insertNewRecord()
{
int row = modeloFoto->rowCount();
modeloFoto->insertRow(row);
modeloFoto->submitAll();
}
void Dialog::getCurrentRecord()
{
//get image filename
QModelIndex index = vistaFoto->currentIndex();
ui->fileNameLabel->setText(modeloFoto->data(modeloFoto->index(index.row(), foto_name),0).toString());
//get image
QVariant currentImage = modeloFoto->data(modeloFoto->index(index.row(), foto_image),0);
QByteArray bytes = currentImage.toByteArray();
QImage image;
image.loadFromData(bytes);
ui->foto->setPixmap(QPixmap::fromImage(image));
}