Bonjour,

Je cherche à coder une barre gauche verticale contenant des images. l'appui sur une image de cette barre générant l'affichage d'un widget différent dans la partie centrale de l'application.
Un peu comme la barre gauche que l'on trouve sur Qt creator :
Nom : CaptureQtCreator.PNG
Affichages : 66
Taille : 9,4 Ko

Je n'ai pas trouvé de widget déjà existant pour cet élément.
Du coup, pour le moment, je suis parti sur l'idée d'une QToolBar contenant des QLabel.

Est ce que cette conception semble judicieuse ? y a t'il des widget plus pertinent pour réaliser cet élément ?

Pour le moment, j'ai du mal à gérer un affichage correct des images dans le widget. J'ai essayé différentes solutions pour les dimensionner correctement mais sans succès.
il me reste aussi à coder la gestion des actions sur des clicks souris afin de faire afficher le bon widget au centre de mon application.

le code :
gestion des QLabel .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
27
28
#ifndef ELEMTOOLBAR_H
#define ELEMTOOLBAR_H
 
#include <QtDebug>
#include <QWidget>
#include <QVBoxLayout>
#include <QToolBar>
#include <QIcon>
#include <QLabel>
#include <QSize>
#include <QPixmap>
#include <QImage>
 
class ElemToolBar : public QWidget
{
    Q_OBJECT
public:
    ElemToolBar(QString, QWidget *parent=0);
 
 
private:
    QLabel *lblToolBar;
    QSize *imageSize;
    QImage *imageToDisplay;
    QPixmap *pixmapToDisplay;
};
 
#endif // ELEMTOOLBAR_H
le .cpp associé :
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
#include "elemtoolbar.h"
 
ElemToolBar::ElemToolBar(QString iconFilePath,QWidget *parent) : QWidget(parent)
{
    lblToolBar = new QLabel("Test");
    //lblToolBar->adjustSize();
    imageSize = new QSize(200,200);
    pixmapToDisplay = new QPixmap(*imageSize);
    imageToDisplay = new QImage(iconFilePath);
    pixmapToDisplay->fromImage(*imageToDisplay);
    pixmapToDisplay->scaled(200,200);
    //lblToolBar->setPixmap(*pixmapToDisplay);
    lblToolBar->setPixmap(QPixmap(iconFilePath).scaled(100,100));
    imageSize = new QSize(100,100);
    lblToolBar->setMaximumSize(*imageSize);
    lblToolBar->isVisible();
 
    QVBoxLayout *velayout = new QVBoxLayout(this);
    velayout->addWidget(lblToolBar);
}
le .h du widget ToolBar :
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
#ifndef LEFTTABWIDGET_H
#define LEFTTABWIDGET_H
 
 
#include <QtDebug>
#include <QWidget>
#include <QVBoxLayout>
#include <QToolBar>
#include <QIcon>
#include "elemtoolbar.h"
 
class lefttabwidget : public QWidget
{
    Q_OBJECT
public:
    lefttabwidget(QWidget *parent=0);
 
 
private:
    QToolBar *LeftToolBar;
    ElemToolBar *Elem1;
    ElemToolBar *Elem2;
    ElemToolBar *Elem3;
    ElemToolBar *Elem4;
};
 
#endif // LEFTTABWIDGET_H
et le .cpp associé:
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
#include "lefttabwidget.h"
 
 
lefttabwidget::lefttabwidget(QWidget *parent) : QWidget(parent)
{
    // définition des éléments QIcon
    Elem1 = new ElemToolBar("C:\\Dev\\Jigsaw_v2_proto2\\Ressources\\train.ico");
    Elem2 = new ElemToolBar("C:\\Dev\\Jigsaw_v2_proto2\\Ressources\\database.ico");
    Elem3 = new ElemToolBar("C:\\Dev\\Jigsaw_v2_proto2\\Ressources\\SPPDemo.png");
    Elem4 = new ElemToolBar("C:\\Dev\\Jigsaw_v2_proto2\\Ressources\\G1.jpg");
 
    LeftToolBar = new QToolBar();
    LeftToolBar->addWidget(Elem1);
    LeftToolBar->addSeparator();
    LeftToolBar->addWidget(Elem2);
    LeftToolBar->addSeparator();
    LeftToolBar->addWidget(Elem3);
    LeftToolBar->addSeparator();
    LeftToolBar->addWidget(Elem4);
    LeftToolBar->addSeparator();
 
    //QMainWindow::addToolBar ou QMainWindow::insertToolBar
    LeftToolBar->setOrientation(Qt::Vertical);
 
    QVBoxLayout *vtlayout = new QVBoxLayout(this);
    vtlayout->addWidget(LeftToolBar);
}


Est-il possible de forcer un dimensionnement automatique des images pour que tous les éléments de la tool bar soit visible dans la fenêtre de l'application ?

Merci pour vos conseils :-)