Russian Qt Forum
Май 02, 2024, 05:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileDialog+QFilePreview+ExistingFiles  (Прочитано 4540 раз)
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);
}


В чем может быть проблема?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Апрель 28, 2005, 11:03 »

Это баг Qt. В 3.3.3 пока не исправлен.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Hellenna
Гость
« Ответ #2 : Апрель 28, 2005, 12:28 »

обидно....Грустный
спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.