Пишу диалог открытия графических файлов с предпросмотром. Пороблема заключается в том, что если поставить режим QFileDialog::ExistingFiles, то содержимое файла отображается только со второго раза (т.е. для того чтобы получить картинку в окне предпросмотра надо два раза подряд кликнуть на имя файла). Если режим QFileDialog::ExistingFile то все работает правильно (отображается с первого раза).
Вот код (сорри, что довольно много, но решила написать все):
class PixmapView : public QScrollView
{
Q_OBJECT
public:
PixmapView( QWidget *parent );
void setPixmap( const QPixmap &pix );
void drawContents( QPainter *p, int, int, int, int );
private:
QPixmap pixmap;
};
PixmapView::PixmapView( QWidget *parent )
: QScrollView( parent )
{
viewport()->setBackgroundMode( PaletteBase );
}
void PixmapView::setPixmap( const QPixmap &pix )
{
pixmap = pix;
resizeContents( pixmap.size().width(), pixmap.size().height() );
viewport()->repaint( FALSE );
}
void PixmapView::drawContents( QPainter *p, int cx, int cy, int cw, int ch )
{
p->fillRect( cx, cy, cw, ch, colorGroup().brush( QColorGroup::Base ) );
if(pixmap.isNull()==false)
p->drawPixmap( 0, 0, pixmap );
else p->drawText(2, cw/2, tr("This is not a pixmap"));
}
class Preview : public PixmapView, public QFilePreview
{
public:
Preview( QWidget *parent=0 ) : PixmapView( parent ) {}
void previewUrl( const QUrl &u )
{
QString path = u.path();
QPixmap pix( path );
setPixmap( pix );
}
};
class PFileDialog:public QFileDialog{
public:
PFileDialog(QWidget *parent=0, const char* name=0, bool modal=false);
protected:
Preview *p;
};
PFileDialog::PFileDialog(QWidget *parent, const char* name, bool modal):QFileDialog(parent, name, modal){
p = new Preview (this);
setContentsPreviewEnabled( TRUE );
setContentsPreview( p, p );
setPreviewMode( QFileDialog::Contents );
setMode(QFileDialog::ExistingFiles);
}
В чем может быть проблема?