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 :
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 #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
Petites infos sur mon code, l'attribut "map" est ma QScrollArea. J'utilise les Auto-Connect car mon interface est créé avec QTDesigner.
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); }
Auriez-vous une idée de ce que j'ai fait de traver ?
Merci d'avance![]()
Partager