Bonjour,

J'ai un petit soucis pour activer ma QScrollArea sur mon image. Voici ma situation plus en détail.

J'ai une image de taille 1134 x 1143 et ma fenêtre fait 1024 x 768. J'ai plusieurs QWidgets dans ma fenêtre dont une QScrollArea qui contient un QLabel qui est mon image. Lors du démarrage mon image s'adapte juste à la taille de ma QScrollArea, jusque là pas de problème.

Ensuite j'ai 3 boutons sur le côté (1 pour zoomer, 1 pour dézoomer et 1 pour redonner sa taille normale à mon image). Mais lorsque je clique sur n'importe lequel de ces boutons il n'y a strictement rien qui se passe

Voici mon .h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndefFENMAP_H
#defineFENMAP_H
#include<QtGui>
#include"ui_fenetre.h"

class FenMap : public QWidget, private Ui::FenMap {
    Q_OBJECT
    
    private:
        QLabel* imageLabel;
        double scaleFactor;
        
        void adjustScrollBar (QScrollBar* scrollBar, double factor);
        void scaleImage (double factor);

    public:
        FenMap (QWidget* parent = 0);

    privateslots:
        void on_button_clicked ();
        void on_zoomIn_clicked ();
        void on_zoomOut_clicked ();
        void on_normalSize_clicked ();
};

#endif//FENMAP_H
Mon .cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include"include/FenMap.h" 

FenMap::FenMap (QWidget* parent) : QWidget (parent) {
    setupUi (this);
    QImage img ("../files/metro.bmp");
    this->imageLabel = newQLabel;
    this->imageLabel->setBackgroundRole (QPalette::Base);
    this->imageLabel->setSizePolicy (QSizePolicy::Ignored, QSizePolicy::Ignored);
    this->imageLabel->setScaledContents (true);
    this->imageLabel->setPixmap (QPixmap::fromImage (img));
    this->scaleFactor = 1.0;
    this->map->setBackgroundRole (QPalette::Dark);
    this->map->setWidget (imageLabel);
    this->map->setWidgetResizable (true);
}

void FenMap::on_button_clicked () {
    this->textArrival->setPlainText ("blablz");
}

void FenMap::adjustScrollBar (QScrollBar* scrollBar, double factor) {
    scrollBar->setValue (int (factor*scrollBar->value () + ((factor-1) * scrollBar->pageStep () / 2)));
}

void FenMap::on_zoomIn_clicked () {
    this->scaleImage (1.25);
}

void FenMap::on_zoomOut_clicked () {
    this->scaleImage (0.8);
}

void FenMap::on_normalSize_clicked () {
    this->imageLabel->adjustSize ();
    this->scaleFactor = 1.0;
}

void FenMap::scaleImage (doublefactor) {
    Q_ASSERT (imageLabel->pixmap ());
    this->scaleFactor *= factor;
    this->imageLabel->resize (this->scaleFactor * this->imageLabel->pixmap ()->size ());
    this->adjustScrollBar (this->map->horizontalScrollBar (), factor);
    this->adjustScrollBar (this->map->verticalScrollBar (), factor);
}
Petites infos sur mon code, l'attribut "map" est ma QScrollArea. J'utilise les Auto-Connect car mon interface est créé avec QTDesigner.

Auriez-vous une idée de ce que j'ai fait de traver ?

Merci d'avance