#include "imagefiledialog.h" #include <QMessageBox> #include <QLayout> #include <QSplitter> #include <QDebug> void ImageFileDialog::init() { _preview = 0; QSplitter *splitter; splitter = ((QFileDialog*)this)->findChild<QSplitter*>("splitter"); if (splitter == 0) { return; } _preview = new QLabel(); QRect geomerty = _preview->geometry(); geomerty.setWidth(160); _preview->setGeometry(geomerty); splitter->addWidget(_preview); connect(this, SIGNAL(currentChanged(QString)), this, SLOT(fileChanged(QString))); } void ImageFileDialog::deinit() { if (_preview != 0) { delete _preview; _preview=0; } } void ImageFileDialog::fileChanged(const QString &file) { if (_preview == 0) { return; } QImage img=QImage(file); if (img.isNull()) { _preview->setPixmap(QPixmap()); } else { QSize size = _preview->size(); QImage smallimage=img.convertToFormat(QImage::Format_ARGB32).scaled(size, Qt::KeepAspectRatio); QPixmap pix=QPixmap::fromImage(smallimage); _preview->setPixmap(pix); } }