Bonjour,

Une fois de plus je viens vous demandez votre aide précieuse car je bloque.

Dans mon programme j'ai un QLCDNumber qui s'incrémente et se décrémente à l'aide de deux boutons "+" et "-". Et un bouton "Add" qui permettais jusque la de créer un nombre de (nouveaux) boutons équivalent a la valeur du LCD.
Nom : Screen Shot 2014-11-29 at 11.09.47.png
Affichages : 416
Taille : 13,8 Ko

Les boutons créer bénéficie d'un nom différent grave a un slots "create fonction" qui fonctionne comme ceci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
void MaFenetre::createbutton()
{
 
 
 
        for(int i = count; i < count + m_lcd->value(); i++){
            QPushButton *m_button = new QPushButton(tr("video %1").arg(i+1));
            m_layout->addWidget(m_button);
        }
        count += m_lcd->value();
 
}
Mon but est de pouvoir créer une classe dans laquelle il y a deux boutons et une QCombobox (voire plus) qui seront créer a chaque clic du bouton "Add" et qui créera autant d'object que la valeur du QLCD. Mais surtout que le nom de mon premier bouton puisse s'incrementer comme avec la methode create buttons.

Je vous mets dessous les code de MaFenetre et de Video seulement.

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
45
46
#ifndef MAFENETRE_H
#define MAFENETRE_H
#include <QApplication>
#include <QWidget>
#include <QtWidgets>
#include <QPushButton>
#include <QLCDNumber>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include "MyLCD.h"
#include "Video.h"
 
class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
 
public:
 
MaFenetre();
 
public slots:
 
void createbutton();
 
private:
 
QPushButton *m_minusbutton;
QPushButton *m_plusbutton;
QPushButton *m_addbuttonListener;
QHBoxLayout *m_toplayout;
QVBoxLayout *m_principallayout;
QVBoxLayout *m_layout;
MyLCD *m_lcd;
Video *m_video;
int count;
 
 
 
};
 
 
 
 
 
#endif // MAFENETRE_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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "MaFenetre.h"
#include <iostream>
 
 
using namespace std;
MaFenetre::MaFenetre() : QWidget()
{
 
// Construction des boutons
 
m_minusbutton = new QPushButton("-", this);
m_lcd = new MyLCD();
m_plusbutton = new QPushButton("+", this);
m_addbuttonListener = new QPushButton("add", this);
 
// Création des layouts
 
// Layout menu
m_toplayout = new QHBoxLayout;
m_toplayout->addWidget(m_minusbutton);
m_toplayout->addWidget(m_lcd);
m_toplayout->addWidget(m_plusbutton);
m_toplayout->addWidget(m_addbuttonListener);
 
// Layout bouton "video"
 
m_layout = new QVBoxLayout;
 
// Layout principal
 
m_principallayout = new QVBoxLayout;
m_principallayout->addLayout(m_toplayout);
m_principallayout->addLayout(m_layout);
 
setLayout(m_principallayout);
 
 
 
QWidget::connect(m_minusbutton, SIGNAL(clicked()), m_lcd, SLOT(decrement()));
QWidget::connect(m_plusbutton, SIGNAL(clicked()), m_lcd, SLOT(increment()));
QWidget::connect(m_addbuttonListener, SIGNAL(clicked()), this, SLOT(createbutton()));
}
 
// Méthode creation des boutons "video"
 
 
void MaFenetre::createbutton()
{
 
 
        for(int i = count; i < count + m_lcd->value(); i++){
            Video *m_video = new Video(count);
            m_layout->addWidget(m_video);
        }
        count += m_lcd->value();
 
}
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
#ifndef VIDEO_H
#define VIDEO_H
#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>
#include <QComboBox>
#include <QGridLayout>
#include <QFileDialog>
#include "MyLCD.h"
 
class Video : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
 
public:
 
Video(QWidget* parent=0);
Video(int videoname);
 
 
 
private:
 
 
QPushButton *m_buttonvideo;
QPushButton *m_buttonload;
QHBoxLayout *m_buttonvideolayout;
QComboBox *m_midinotelist;
int m_videoname;
int count;
 
 
//int count;
 
 
 
};
#endif // VIDEO_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
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "Video.h"
#include <iostream>
 
 
using namespace std;
 
Video::Video(QWidget* parent) : QWidget(parent)
{
 
}
 
Video::Video(int videoname) : m_videoname(videoname)
{
 
    // Construction des boutons
 
 
      m_buttonvideo = new QPushButton(tr("video %1").arg(videoname+1));
      m_buttonload = new QPushButton("Load");
 
    m_midinotelist= new QComboBox();
      m_midinotelist->addItem("C1");
      m_midinotelist->addItem("C2");
      m_midinotelist->addItem("C3");
      m_midinotelist->addItem("C4");
      QString dossier = QFileDialog::getExistingDirectory(this);
 
 
 
 
    // Création des layouts
 
      m_buttonvideolayout = new QHBoxLayout;
      m_buttonvideolayout->addWidget(m_buttonvideo);
      m_buttonvideolayout->addWidget(m_buttonload);
      //m_buttonvideolayout->addWidget(m_midinotelist,1,0);
 
      setLayout(m_buttonvideolayout);
 
 
}
Ici le probléme est que si je veux des boutons video qui se suivent video 1, video 2, video 3 etc.. je dois les créer un par un, forcement si j'en créé deux d'un coup ils porteront le même nom c'est à dire "video 1". Comment puis je faire pour que l'incrémentation du nom de mes boutons s'effectue correctement au seins de leur classe vidéo, alors que les valeur du LCD sont dans une autre classe. il y a t'il moyen de communiquer entre classe ? je suppose que oui, mais je ne trouve pas comment faire correctement.

Merci d'avance pour votre aide