Bonjour,

Je réalise pour moi une petite application qui me permet de sélectionné dans une liste la radio que je veux écouter (rien d'orignal, je sais).

J'ai déjà réalisé cette application en Qt5. Mais depuis je suis passé a Qt6. Je l'ai refaite depuis le début. Mon soucis, je ne parviens pas a faire varier le volume.

j'ai donc un QSlider qui doit faire varier le volume. Mais ça le met soit a Zéro, soit a 100%. Je ne sais pas comment le mettre par exemple a 50% où 20%.

Comment procéder ?

Le code mon programme :

Mon fichier FenetrePrincipale.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
 
#ifndef FENETREPRINCIPALE_H
#define FENETREPRINCIPALE_H
 
#include <QMainWindow>
#include <QFile>
#include <QMessageBox>
#include <QMediaPlayer>
#include <QAudioOutput>
 
 
QT_BEGIN_NAMESPACE
namespace Ui { class FenetrePrincipale; }
QT_END_NAMESPACE
 
class FenetrePrincipale : public QMainWindow
{
    Q_OBJECT
 
public:
    FenetrePrincipale(QWidget *parent = nullptr);
    ~FenetrePrincipale();
 
private slots:
    void on_verticalSlider_valueChanged(int value);
    void startup();
 
    void on_actionQuitter_triggered();
 
    void on_listWidget_currentTextChanged(const QString &currentText);
 
private:
    Ui::FenetrePrincipale *ui;
 
    QMediaPlayer *player;
    QAudioOutput *audioOutput;
};
#endif // FENETREPRINCIPALE_H
Et mon FenetrePrincipale.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
#include "FenetrePrincipale.h"
#include "ui_FenetrePrincipale.h"
 
#include <QDebug>
 
FenetrePrincipale::FenetrePrincipale(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::FenetrePrincipale)
{
    ui->setupUi(this);
    ui->actionQuitter->setShortcut(QKeySequence::Quit);
 
    startup();
    player = new QMediaPlayer;
    audioOutput = new QAudioOutput;
    player->setAudioOutput(audioOutput);
 
}
 
FenetrePrincipale::~FenetrePrincipale()
{
    delete ui;
}
 
 
void FenetrePrincipale::on_verticalSlider_valueChanged(int value)
{
 
 
 
        // volumeSliderValue is in the range [0..100]
 
        qreal linearVolume = QAudio::convertVolume(value / qreal(100.0),
                                                   QAudio::LogarithmicVolumeScale,
                                                   QAudio::LinearVolumeScale);
 
    audioOutput->setVolume(qRound(linearVolume * 100));
 
}
 
void FenetrePrincipale::startup()
{
    QString line;
    QFile file("../../radios.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QMessageBox msgBox;
        msgBox.setText("Error: file not found.");
        msgBox.exec();
 
        return;
    }
 
 
 
    QTextStream flux(&file);
    while (!flux.atEnd())
    {
        line = flux.readLine();
        ui->listWidget->addItem(line);
    }
 
 
}
 
 
void FenetrePrincipale::on_actionQuitter_triggered()
{
    qApp->quit();
}
 
 
void FenetrePrincipale::on_listWidget_currentTextChanged(const QString &currentText)
{
    player->setSource(currentText);
    audioOutput->setVolume(1);
    player->play();
 
}
et la fenetre en FenetrePrincipale.ui
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
58
59
60
61
62
63
64
65
66
67
68
69
70
 
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>FenetrePrincipale</class>
 <widget class="QMainWindow" name="FenetrePrincipale">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>FenetrePrincipale</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QListWidget" name="listWidget">
      <property name="font">
       <font>
        <pointsize>14</pointsize>
       </font>
      </property>
     </widget>
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <widget class="QSlider" name="verticalSlider">
        <property name="pageStep">
         <number>5</number>
        </property>
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>21</height>
    </rect>
   </property>
   <widget class="QMenu" name="menuFichier">
    <property name="title">
     <string>Fichier</string>
    </property>
    <addaction name="actionQuitter"/>
   </widget>
   <addaction name="menuFichier"/>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <action name="actionQuitter">
   <property name="text">
    <string>Quitter</string>
   </property>
  </action>
 </widget>
 <resources/>
 <connections/>
</ui>
Merci de m'avoir lu.