install gif
-
salut a tous , j'essais d'installer des gifs et j'arrive a l'appeler au moment que je veux mais il s'accade ,
je possède un mainwindow qui ouvre une fenetre(interface) ou dans celle ci mon gif est commander par une variable extern .
il s'ouvre bien mais tourne au ralenti car dans cette fenetre il y a un QTimer .
quand je ferme la fenetre (interface) et si mon gif est ->start() il fonctionne normalement!comment puis-je le faire tourner correctement sur ma fenetre (interface).
merci
-
@ludoraspberry said in install gif:
salut a tous , j'essais d'installer des gifs et j'arrive a l'appeler au moment que je veux mais il s'accade ,
je possède un mainwindow qui ouvre une fenetre(interface) ou dans celle ci mon gif est commander par une variable extern .
il s'ouvre bien mais tourne au ralenti car dans cette fenetre il y a un QTimer .
quand je ferme la fenetre (interface) et si mon gif est ->start() il fonctionne normalement!comment puis-je le faire tourner correctement sur ma fenetre (interface).
merci
interface cpp
#include "interface.h" #include <signal.h> #include "BB_DS18B20.hpp" #include "gpioPin.hpp" #include "relais.hpp" #include "lectureTemps.hpp" #include "commandes.hpp" #include "vitesseVentilateurs.hpp" #include "affichageTerminal.hpp" #include "gainable.hpp" extern BB_DS18B20 * ds18b20; extern bool compresseurFroid; Interface::Interface(QWidget *parent) :QWidget (parent) ,initLCD {QString::number(0.00,'f',2)} ,m_timerStart(1000) { m_timer1 = new QTimer(this); } void Interface::dispInterface() { m_window1 = new QLabel(this); m_window1 ->hide(); m_window1 ->setPixmap(QPixmap("/home/ludo/Qt/test2/build/images/file (2) (1).jpg")); m_window1 ->showMaximized(); // ligne du haut m_disp1 = new QGroupBox("Temp°C Ext",this); m_disp1 ->setStyleSheet("QGroupBox:title {color: orangered;}"); m_disp1 ->setFont(QFont("Times", 18, QFont::Bold)); m_disp1 ->setGeometry(200,40,240,120); m_affTemp1 = new QLCDNumber(m_disp1); m_affTemp1 ->setGeometry(0,35,240,80); m_affTemp1 ->display(initLCD); // m_disp2 = new QGroupBox("Temp°C UnitExt",this); m_disp2 ->setStyleSheet("QGroupBox:title {color: orangered;}"); m_disp2 ->setFont(QFont("Times", 18, QFont::Bold)); m_disp2 ->setGeometry(520,40,240,120); m_affTemp2 = new QLCDNumber(m_disp2); m_affTemp2 ->setGeometry(0,35,240,80); m_affTemp2 ->display(initLCD); // m_disp3 = new QGroupBox("Temp°C EcUnitExt",this); m_disp3 ->setStyleSheet("QGroupBox:title {color: orangered;}"); m_disp3 ->setFont(QFont("Times", 18, QFont::Bold)); m_disp3 ->setGeometry(840,40,240,120); m_affTemp3 = new QLCDNumber(m_disp3); m_affTemp3 ->setGeometry(0,35,240,80); m_affTemp3 ->display(initLCD); // m_disp4 = new QGroupBox("Temp°C UnitInt",this); m_disp4 ->setStyleSheet("QGroupBox:title {color: orangered;}"); m_disp4 ->setFont(QFont("Times", 18, QFont::Bold)); m_disp4 ->setGeometry(1160,40,240,120); m_affTemp4 = new QLCDNumber(m_disp4); m_affTemp4 ->setGeometry(0,35,240,80); m_affTemp4 ->display(initLCD); m_disp5 = new QGroupBox("Temp°C EcUnitInt",this); m_disp5 ->setStyleSheet("QGroupBox:title {color: orangered;}"); m_disp5 ->setFont(QFont("Times", 18, QFont::Bold)); m_disp5 ->setGeometry(1480,40,240,120); m_affTemp5 = new QLCDNumber(m_disp5); m_affTemp5 ->setGeometry(0,35,240,80); m_affTemp5 ->display(initLCD); m_timer1 ->start(m_timerStart); connect(m_timer1,&QTimer::timeout,[this](){startProgramme();}); } void Interface::startProgramme() { lireDS18B20(); consigneDelta = tempExtLue - delta; m_affTemp1 ->display(tempExtLue); // la variable valeur lue sur la sonde m_affTemp2 ->display(tempUnitExtLue); m_affTemp3 ->display(tempEcExtLue); m_affTemp4 ->display(tempUnitIntLue); m_affTemp5 ->display(tempEcIntLue); startGainable(); fondEcran(); } void Interface::fondEcran() { if (chauffage == true) { // chauffage m_window1 ->hide(); m_window1 ->setPixmap(QPixmap("/home/ludo/Qt/test2/build/images/earth_heat_drought_46718_1920x1080.jpg")); m_window1 ->showMaximized(); } else if (froid == true) { // froid m_window1 ->hide(); m_window1 ->setPixmap(QPixmap("/home/ludo/Qt/test2/build/images/ice_cube_water_18142_1920x1080.jpg")); m_window1 ->showMaximized(); } else if (canicule == true) { // canicule m_window1 ->hide(); m_window1 ->setPixmap(QPixmap("/home/ludo/Qt/test2/build/images/volcano_art_lava_128500_1920x1080.jpg")); m_window1 ->showMaximized(); } } void Interface::startGainable() { time_t rawtime; time ( & rawtime); cout << ctime ( & rawtime) << endl; signal (SIGINT, my_ctrl_c_handler); consigneDelta = tempExtLue - delta; consigneVentIntCa = consigneDelta + 2; commandeFroid(); commandeChauffage(); commandeCanicule(); hysteresisTempVitesseIntCa(); hysteresisTempVitesseExtFroid(); hysteresisTempVitesseIntFroid(); hysteresisTempVitesseExtChauf(); hysteresisTempVitesseIntChauf(); affichageTerminal(); gainable(); } void Interface::afficheConsignes() { m_dispCons = new DispCons(); } void Interface::my_ctrl_c_handler(int s) { desactiveTousRelais(); digitalWrite (relaiEteHiver, HIGH); delete ds18b20; release_gpiod(); exit (0); } void Interface::arretGainable() { m_timer1 ->stop(); m_window1 ->hide(); autoModeEteHiver(); chauffage = false; froid = false; ventilation = false; }
interface H
#ifndef INTERFACE_H #define INTERFACE_H #include <QtWidgets> #include "dispcons.h" extern float tempExtLue; extern float consigneExt; extern float consigneCanicule; extern float consigneDelta; extern float delta; extern void autoModeEteHiver(); extern bool froid; extern bool chauffage; extern bool canicule; extern bool ventilation; class Interface: public QWidget { Q_OBJECT public: Interface(QWidget *parent = nullptr); QLabel *m_window1; QTimer *m_timer1; void dispInterface(); void afficheConsignes(); void arretGainable(); private: DispCons *m_dispCons; QString initLCD; // int m_timerStart; //durée timer entre lecture QGroupBox *m_disp1; //tempExt QLCDNumber *m_affTemp1; QGroupBox *m_disp2; //tempUnitExt QLCDNumber *m_affTemp2; QGroupBox *m_disp3; //tempEcExt QLCDNumber *m_affTemp3; QGroupBox *m_disp4; //tempUnitInt QLCDNumber *m_affTemp4; QGroupBox *m_disp5; //tempEcInt QLCDNumber *m_affTemp5; void startProgramme(); void fondEcran(); void startGainable(); static void my_ctrl_c_handler (int s); }; #endif // INTERFACE_H
-
Bonjour,
Au vu du nombre d'extern et du signal handler, je soupçonne un programme écrit en C sur lequel une GUI est greffée. Est-ce juste ?
Vue l'implémentation, j'ai l'impression qu'il doit y avoir une boucle infinie cachée quelque part dans le code non-posté. Est-ce correct ? -
mon MAIN
#include "mainwindow.h" #include "lectureTemps.hpp" #include "gpioPin.hpp" #include "BB_DS18B20.hpp" #include "commandes.hpp" #include "relais.hpp" #include <QApplication> BB_DS18B20 * ds18b20; int main(int argc, char *argv[]) { // pin Sondes ds18b20 int DS_PIN = 4; pinMode (DS_PIN, OPENDRAIN_PULLUP); ds18b20 = new BB_DS18B20 (gpioline[DS_PIN]); // pins // soties pinMode (relaiEteHiver, OUTPUT); digitalWrite (relaiEteHiver, HIGH); pinMode (relaiComp, OUTPUT); digitalWrite (relaiComp, HIGH); pinMode (relaiV4V, OUTPUT); digitalWrite (relaiV4V, HIGH); pinMode (relaiVitesseVentExt, OUTPUT); digitalWrite (relaiVitesseVentExt, HIGH); pinMode (relaiPetiteVitesseInt, OUTPUT); digitalWrite (relaiPetiteVitesseInt, HIGH); pinMode (relaiGrandeVitesseInt, OUTPUT); digitalWrite (relaiGrandeVitesseInt, HIGH); // entrées pinMode (thermostats, INPUT_PULLUP); pinMode (capteurFiltre, INPUT_PULLUP); // le fichier ID sur les ds18b20 loadDSConfig ("DS18B20.conf", ds_ID); // charge info sur les ds18b20 char ficConf[654] = "DS18B20.conf"; FILE * confHan = fopen(ficConf, "r"); if (NULL == confHan) { cout << "Le fichier de configuration \n" << ficConf << "\n doit exister\n"; return (111); } fclose(confHan); loadDSConfig("DS18B20.conf", ds_ID); // protégé contre le cas où il est absent cout << "\n configure\n"; if (ds_ID.size() < 2) { cout << "\nVous devez avoir au moins un thermomètre\n"; return(112); } // créer le vecteur contenant la température des DS18b20 for (uint loop = 0; loop < ds_ID.size(); loop++) ds_temperature.push_back ( -9999.9); // enregistre une information invalide pour commencer QApplication a(argc, argv); QApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); MainWindow w; return a.exec(); }
mainWindow cpp
#include "mainwindow.h" #include "gpioPin.hpp" #include "relais.hpp" MainWindow::MainWindow() { baseWindow =new QWidget; baseWindow ->setFixedSize(1920,1080); baseWindow ->hide(); m_start = new Interface(baseWindow); m_start ->dispInterface(); m_marche = new QPushButton("Démarrage ??",baseWindow); m_marche ->setGeometry(1080,900,240,95); m_marche ->setStyleSheet("font-size: 30px;background-color: lime"); m_marche ->hide(); m_appel1 = new QPushButton("Consignes",baseWindow); m_appel1 ->setGeometry(1340,900,240,95); m_appel1 ->setStyleSheet("font-size: 30px;"); m_appel1 ->show(); m_stop = new QPushButton("Stop ??",baseWindow); m_stop ->setGeometry(1600,900,240,95); m_stop ->setStyleSheet("font-size: 30px;background-color: red"); m_stop ->show(); connect(m_marche,&QPushButton::clicked,m_marche,[this](){reStartGainable();}); connect(m_appel1,&QPushButton::clicked,m_appel1,[this](){m_start ->afficheConsignes();}); connect(m_stop,&QPushButton::clicked,m_stop,[this](){stopGainable();}); baseWindow->show(); } void MainWindow::reStartGainable() { m_start ->m_timer1 ->start(); m_marche ->hide(); } void MainWindow::stopGainable() { m_start ->arretGainable(); desactiveTousRelais(); digitalWrite (relaiEteHiver, HIGH); m_start ->m_window1 ->setPixmap(QPixmap("/media/ludo/D83C-C33A/file (2) (1).jpg")); m_start ->m_window1 ->showMaximized(); m_marche ->show(); }
mainwindow H
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtWidgets> #include "interface.h" class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); QWidget *baseWindow; private: Interface *m_start; QPushButton *m_marche; QPushButton *m_appel1; QPushButton *m_stop; void reStartGainable(); void stopGainable(); }; #endif // MAINWINDOW_H