IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Liens de Qt vers une classe C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2024
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Liens de Qt vers une classe C++
    Bonjour,
    j'ai écris une petite appli en c++.
    De manière à rendre cette appli plus ludique, j'ai commencé a l'intégrer dans qt
    Actuellement, j'ai la page d'accueil sous qt, puis du c++ qui récupère des chiffres de pilotage à l'aide du terminal.
    Je voudrais pouvoir entrer les chiffres sous qt, est-ce que quelqu'un peut m'aider ?
    Le projet en téléchargement est là www.letime.net/son/ap/archive.tar.xz

    En détail, l'application est composée de 80 générateurs modifiable de fichiers textes, ces textes représentent des formes sonores et de 7 transformateurs de fichier texte en format audio stéréo ogg
    Cordialement

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 657
    Points : 188 663
    Points
    188 663
    Par défaut


    Ton code Qt est du code C++, tu peux donc utiliser ton code préexistant sans problème. Le plus simple est probablement de juste le copier dans ton projet Qt. Ensuite, depuis ton interface, tu auras probablement un QTextEdit/QPlainTextEdit : lors d'un clic par l'utilisateur sur un bouton, Qt émet un signal ; connecte une fonction à ce signal pour appeler ton code extérieur (en récupérant le texte du QPlainTextEdit avec plainText(), par exemple) et gérer les changements dans l'interface. (Tu peux aussi jouer des sons OGG avec Qt.)
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2024
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Mille mercis pour la réponse.
    ça fait deux jour, que j'essaie et je dois faire tout ce qui ne faut pas, comme déplacer les projets, qt fait maintenant n'importe quoi, il me dit même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :-1: erreur : Unknown module(s) in QT: multimedia multimediawidgets
    alors que j'ai dans le pro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    QT += network \
          xml \
          widgets \
          core gui \
          multimedia \
          multimediawidgets \
    et j'ai bien installé les deb multimedia
    Heuresement que c'était par curiosité, car j'ai libsox dans le projet qui est beaucoup plus puissant et léger.
    Est-ce que je pourrai avoir un code qui fonctionne qui ouvre de mainwindow vers QDialog au clique bouton?
    Cordialement

    P.S.
    J'ai une application qui en premier questionne pour savoir quelle sera l'action de sox sur la sortie, donc c'est d'avoir des boutons dans mainwindows pour sélectionner.
    Ces boutons doivent ouvrir sur une fenêtre QDialog qui contient les spinboutons pour donner les int utiles à la construction des fichiers audio
    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
    #include "dialog.h"
    #include "ui_dialog.h"
     
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Dialog)
    {
        ui->setupUi(this);
    }
     
    Dialog::~Dialog()
    {
        delete ui;
    }
     
    void Dialog::on_spinBox_2_valueChanged(int arg1)
    {
     
    }
    Ce que je cherche c'est le code à mettre dans le bouton de mainwindows pour ouvrir la fenêtre QDialog sacahnt que QDialog va être dans une boucle car chaque construction d'une nouvelle forme questionne

  4. #4
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2024
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Pour la page qui dessine les formes en fichier texte, j'ai commencé à modifier mais c'est encore dans le terminal, car je n'ai pas la page QDialog c'est actuellement
    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
    81
    82
    83
    84
    #include "app81.h"
    #include "ui_app81.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <QFile>
    using namespace std;
     
    app81::app81(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::app81)
    {
        ui->setupUi(this);
    }
     
    app81::~app81()
    {
        delete ui;
    }
    int tab[801], tab1[3];
    void app81::on_spinBox_valueChanged(int arg1)
    {
        tab1[0]=arg1;
    }
     
     
    void app81::on_spinBox_2_valueChanged(int arg1)
    {
        tab1[1]=arg1;
    }
     
     
    void app81::on_spinBox_3_valueChanged(int arg1)
    {
        tab1[2]=arg1;
    }
     
     
     
    void app81::on_buttonBox_accepted(){
        QString fjo = "audio.jo";
        QFile file(fjo);
     
     
        if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            QTextStream ici(&file);
     
     
            for(int i=0; i<800; i++) tab[i] = 128;
            for(int i=1; i<800;i=i+2) tab[i] = 2;
     
            // 2 ondes répétées 2 fois
     
            int j1=1, j2=1, j3=1, j4=1;
     
            for(int i=2; i<400;i=i+16) {  tab[i] = 128+(j1*(tab1[0]));  j1++ ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=6; i<400;i=i+16) {  tab[i] = 128+(j2*(tab1[1]));  j2++ ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=10; i<400;i=i+16) { tab[i] = 128+(j3*(tab1[0]));  j3++ ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=14; i<400;i=i+16) { tab[i] = 128+(j4*(tab1[1]));  j4++ ; if (tab[i] > 250){tab[i] = 250;}}
     
     
            for(int i=402; i<800;i=i+16) {  tab[i] = 128+(j1*(tab1[0]));  j1-- ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=406; i<800;i=i+16) {  tab[i] = 128+(j2*(tab1[1]));  j2-- ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=410; i<800;i=i+16) { tab[i] = 128+(j3*(tab1[0]));  j3-- ; if (tab[i] > 250){tab[i] = 250;}}
            for(int i=414; i<800;i=i+16) { tab[i] = 128+(j4*(tab1[1]));  j4-- ; if (tab[i] > 250){tab[i] = 250;}}
     
     
            int j5=1, j6=1, j7=1, j8=1;
            for(int i=4; i<400;i=i+16) {  tab[i] = 128-(j5*(tab1[1]));  j5++ ; if (tab[i] < 5){tab[i] = 5;}}
            for(int i=8; i<400;i=i+16) {  tab[i] = 128-(j6*(tab1[0]));  j6++ ;  if (tab[i] < 5){tab[i] = 5;}}
            for(int i=12; i<400;i=i+16) { tab[i] = 128-(j7*(tab1[1]));  j7++ ;  if (tab[i] < 5){tab[i] = 5;}}
            for(int i=16; i<401;i=i+16) { tab[i] = 128-(j8*(tab1[0]));  j8++ ;  if (tab[i] < 5){tab[i] = 5;}}
     
            for(int i=404; i<800;i=i+16) {  tab[i] = 128-(j5*(tab1[1]));  j5-- ; if (tab[i] < 5){tab[i] = 5;}}
            for(int i=408; i<800;i=i+16) {  tab[i] = 128-(j6*(tab1[0]));  j6-- ;  if (tab[i] < 5){tab[i] = 5;}}
            for(int i=412; i<800;i=i+16) { tab[i] = 128-(j7*(tab1[1]));  j7-- ;  if (tab[i] < 5){tab[i] = 5;}}
            for(int i=416; i<800;i=i+16) { tab[i] = 128-(j8*(tab1[0]));  j8-- ;  if (tab[i] < 5){tab[i] = 5;}}
     
            tab[1] = tab1[2];
     
            for(int i = 0; i < 800; i++) { ici<<tab[i]<< " "; }
            file.close();
        }
    }
    et le 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
    #ifndef APP81_H
    #define APP81_H
    #include <QMainWindow>
    #include <QObject>
    #include <QWidget>
    #include <QDialog>
     
    namespace Ui {
    class app81;
    }
     
     
    class app81 : public QDialog
    {
        Q_OBJECT
     
    public:
     
        explicit app81(QWidget *parent = nullptr);
        ~app81();
     
    private slots:
        void on_spinBox_valueChanged(int arg1);
     
        void on_spinBox_2_valueChanged(int arg1);
     
        void on_spinBox_3_valueChanged(int arg1);
     
        void on_buttonBox_accepted();
     
    private:
        Ui::app81 *ui;
    };
     
    #endif // APP81_H
    Mais la page ne s'affiche pas, l'application fonctionne toujours bien en terminal, c'est juste ce générateur sous qt qui passe sans rien afficher, et l'appli génère le son avec le dessin précédent, puisque le fichier audio.jo est réécrit à chaque nouvelle forme générée

    En d'autres mots, j'ai bien créé toutes mes pages avec ui et les codes en c++, le compilateur ne me donne aucune erreur, si je laisse un bout de code en c++ mode terminal, il génère bien mes fichiers audio, mais je n'arrive pas à changer de page graphique, et normalement il y en a trois, la je reste sur la première
    Cordialement

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2024
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    A force j'ai trouvé la solution, mais plusieurs de mes codes en c++, fonctionnent très bien seul, ne fonctionne pas en intégrant les fichiers dans qt, mais fonctionnent si je crée les bases dans qt et fait un copier/coller des codes sans rien changer. J'ai perdu 2 jours avant de m'apercevoir de ça.
    Je poste en résolu, l'application écrite sous qt est là https://www.letime.net/son/ap/archive.tar.gz. Elle dessine dans des fichiers textes avec quelques valeurs des formes, puis elle les joue au clique sur le bouton écoute, le fichier texte étant généré pour chaque forme, ceux qui veulent le modifier ou controler, il faut le faire avant de générer la forme suivante car il est effacé à chaque forme générée.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/06/2013, 14h58
  2. [POO] Cast d'objet vers une classe
    Par karl3i dans le forum Langage
    Réponses: 9
    Dernier message: 27/07/2009, 10h12
  3. Liens menu dynamique vers une frame
    Par Snoopymaxx dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/04/2009, 19h09
  4. many-to-one vers une classe ayant un composite-id
    Par a tunar with no tune dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/06/2008, 09h08
  5. Declarer un pointeur vers une classe sans new ?
    Par zi_omnislasher dans le forum C++
    Réponses: 15
    Dernier message: 28/09/2007, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo