Название: QFileDialog+QFilePreview+ExistingFiles
Отправлено: Hellenna от Апрель 27, 2005, 23:20
Пишу диалог открытия графических файлов с предпросмотром. Пороблема заключается в том, что если поставить режим 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); } В чем может быть проблема?
Название: QFileDialog+QFilePreview+ExistingFiles
Отправлено: Racheengel от Апрель 28, 2005, 11:03
Это баг Qt. В 3.3.3 пока не исправлен.
Название: QFileDialog+QFilePreview+ExistingFiles
Отправлено: Hellenna от Апрель 28, 2005, 12:28
обидно....:( спасибо.
|