C++ (Qt)#ifndef FILEPREVIEWDIALOG_H#define FILEPREVIEWDIALOG_H #include <QFileDialog>#include <QLabel>#include <QSplitter>#include <QPixmap> class FilePreviewDialog : public QFileDialog{ Q_OBJECTpublic: explicit FilePreviewDialog (QWidget *parent = 0); ~FilePreviewDialog (); private: void init(); QLabel *_preview; signals: public slots: private slots: void fileChanged(const QString &file); }; #endif // FILEPREVIEWDIALOG_H
C++ (Qt)#include "filepreviewdialog.h" FilePreviewDialog::FilePreviewDialog(QWidget *parent) : QFileDialog(parent){ init();} FilePreviewDialog::~FilePreviewDialog(){ if (_preview) delete _preview;} void FilePreviewDialog::init(){ _preview = 0; QSplitter *splitter = findChild<QSplitter*>("splitter"); if (splitter == 0) { return; } _preview = new QLabel(); QRect geomerty = _preview->geometry(); geomerty.setWidth(128); // Настройки геометрии, можно так же сделать что бы рамочка отображалась или что-то вроде _preview->setGeometry(geomerty); splitter->addWidget(_preview); // Собсвенно, добавляем наш виджет в контейнер // подключаем обработчик сигнала currentChanged connect(this, SIGNAL(currentChanged(QString)), this, SLOT(fileChanged(QString))); _preview->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);} void FilePreviewDialog::fileChanged(const QString &file){ if (_preview == 0) { return; } QPixmap pix(file); if (pix.isNull()) { _preview->setPixmap(QPixmap()); _preview->setText(trUtf8("Отсутствует")); } else { // Не зыбываем масштабировать изображение к размеру нашей области просмотра _preview->setText(""); QSize size = _preview->size(); pix = pix.scaled(size, Qt::KeepAspectRatio); _preview->setPixmap(pix); }}
C++ (Qt)while(!asleep()) sheep++;